Redis基础指令全解析:从入门到精通

目录

一、什么是Redis

[1.1 Redis 简介](#1.1 Redis 简介)

[1.2 Redis 核心特性](#1.2 Redis 核心特性)

[1.3 Redis 应用场景](#1.3 Redis 应用场景)

二、安装Redis

[2.1 Windows系统安装](#2.1 Windows系统安装)

[2.1.1 安装方式](#2.1.1 安装方式)

[2.1.2 配置与启动](#2.1.2 配置与启动)

[2.2 Linux系统安装](#2.2 Linux系统安装)

[2.2.1 Ubuntu/CentOS 安装](#2.2.1 Ubuntu/CentOS 安装)

[2.2.2 安装后配置](#2.2.2 安装后配置)

三、Redis通用命令

[3.1 键操作命令](#3.1 键操作命令)

[3.2 数据库操作命令](#3.2 数据库操作命令)

[3.3 服务器管理命令](#3.3 服务器管理命令)

四、Redis基本命令

[4.1 连接与认证](#4.1 连接与认证)

[4.2 事务相关命令](#4.2 事务相关命令)

五、五种数据结构类型

[5.1 String类型](#5.1 String类型)

[5.1.1 基本特性](#5.1.1 基本特性)

[5.1.2 常用命令](#5.1.2 常用命令)

[5.1.3 应用场景](#5.1.3 应用场景)

[5.2 List集合类型](#5.2 List集合类型)

[5.2.1 基本特性](#5.2.1 基本特性)

[5.2.2 常用命令](#5.2.2 常用命令)

[5.2.3 应用场景](#5.2.3 应用场景)

[5.3 Set集合类型](#5.3 Set集合类型)

[5.3.1 基本特性](#5.3.1 基本特性)

[5.3.2 常用命令](#5.3.2 常用命令)

[5.3.3 应用场景](#5.3.3 应用场景)

[5.4 Hash集合类型](#5.4 Hash集合类型)

[5.4.1 基本特性](#5.4.1 基本特性)

[5.4.2 常用命令](#5.4.2 常用命令)

[5.4.3 应用场景](#5.4.3 应用场景)

[5.5 Zset有序集合类型](#5.5 Zset有序集合类型)

[5.5.1 基本特性](#5.5.1 基本特性)

[5.5.2 常用命令](#5.5.2 常用命令)

[5.5.3 应用场景](#5.5.3 应用场景)

六、总结

[6.1 Redis 优势总结](#6.1 Redis 优势总结)

[6.2 使用建议](#6.2 使用建议)

[6.3 学习路径建议](#6.3 学习路径建议)


一、什么是Redis

1.1 Redis 简介

Redis 全称为 Remote Dictionary Server,是一个开源的内存数据结构存储系统。它以键值对的形式存储数据,支持丰富的数据结构,如字符串(String)、列表(List)、集合(Set)、哈希(Hash)、有序集合(Sorted Set)等。Redis 以其极致的性能表现和丰富的功能,广泛应用于缓存、消息队列、实时分析等场景。

作为一个钥匙-值(Key-Value)数据库,Redis 不仅仅是简单的缓存系统,更具备内存数据库的特点,支持数据持久化,使数据既能快速读写,又能不因服务重启丢失。

Redis 是开源软件,拥有活跃的社区和丰富的生态系统,支持多种语言客户端,易于集成。

1.2 Redis 核心特性

  • 内存存储,极致性能: Redis 所有数据均存储于内存,读写速度极快,通常延迟在微秒级别,适合对性能要求极高的应用。
  • 丰富的数据结构支持: 除基础的字符串外,支持 Lists、Sets、Hashes、Sorted Sets 等复杂结构,满足多样化业务需求。
  • 持久化机制: 支持 RDB 快照和 AOF 日志两种持久化方式,保证数据在断电或重启后的安全存储。
  • 主从复制与高可用: 内置主从复制,支持哨兵(Sentinel)实现高可靠性和故障自动切换。
  • 事务支持: 通过 MULTI/EXEC 命令,实现多命令事务提交,保证操作的原子性。
  • 发布/订阅模式: 支持基于频道的消息发布与订阅模型,适用实时通讯应用。
  • Lua 脚本支持: 无缝执行原子脚本,减少客户端与服务器交互。

1.3 Redis 应用场景

  • 缓存系统: 使用 Redis 作为缓存,降低数据库负载,提升系统响应速度。
  • 会话存储: 存储用户会话状态,实现分布式会话共享。
  • 消息队列: 利用 List 及其他数据结构实现轻量级消息队列机制。
  • 实时排行榜: 有序集合类型极适合构建游戏或电商实时排名系统。
  • 计数器系统: 通过字符串类型的自增命令,实现高性能计数。

二、安装Redis

2.1 Windows系统安装

2.1.1 安装方式

  • Windows 版本官方下载: 官方并未提供 Windows 版 Redis,但微软维护的 Windows 兼容版本可以从 GitHub 获取,适合开发测试使用。
  • WSL 2 环境安装: 利用 Windows Subsystem for Linux 运行 Ubuntu 等 Linux 子系统,并在其中通过 Linux 安装方式部署 Redis,兼容性好。
  • Docker 容器部署: 借助 Docker 容器镜像运行 Redis,快速搭建环境,且方便管理和迁移。

2.1.2 配置与启动

  • 服务安装与启动: 可将 Redis 注册为 Windows 服务,方便后台运行和管理。
  • 客户端连接测试: 通过 redis-cli 或其他图形化工具测试连接和基础操作。
  • 基本配置调整: 修改 redis.windows.conf 文件,调整端口、守护进程、持久化参数等。

2.2 Linux系统安装

2.2.1 Ubuntu/CentOS 安装

  • APT/YUM 包管理器安装: 使用 apt-get install redis-server(Ubuntu)或 yum install redis(CentOS)快速安装稳定版本。
  • 源码编译安装: 下载最新源码包,通过 make 编译安装,适合需要自定义配置和最新特性用户。
  • 版本选择建议: 生产环境建议选择稳定版本,确保稳定和安全;开发环境可尝试最新版本。

2.2.2 安装后配置

  • 服务管理命令: systemctl start redis、systemctl enable redis 实现开机自启和服务管理。
  • 配置文件详解: redis.conf 文件中包括网络绑定、最大客户端数、持久化配置、日志级别等重要参数。
  • 安全设置建议: 配置访问密码,绑定本地地址,关闭不必要的命令,结合防火墙规则限制访问。

三、Redis通用命令

3.1 键操作命令

  • KEYS pattern: 按照指定模式查询所有匹配的键。例如 KEYS user* 查找所有以 user 开头的键。生产环境慎用,因会阻塞服务器
  • 在pattern中,可以不需要准确指定要查询的键,在键中间添加?表示?这个位置的字符可以随意,在要查询的键中间添加*,*表示可以匹配任意不限数量的字符,在要查询的键中添加[ad],表示这个位置只匹配a或者d,在要查询的键中添加[^a]表示匹配除了a以外的字符,在要查询的键中添加[a-d],表示匹配a到d之间的字符
  • **keys * 这个命令"不错",**生产环境慎用
  • EXISTS key: 检查某个键是否存在,返回 1 表示存在,0 表示不存在
  • DEL key: 删除一个或多个键,释放内存空间
  • EXPIRE key seconds: 为指定键设置过期时间,单位为秒,过期后键自动删除
  • TTL key: 查看指定键剩余的生存时间,返回剩余秒数或特殊值(-1 未设置过期时间,-2 键不存在)

3.2 数据库操作命令

  • SELECT index: 切换当前工作数据库 Redis 支持多达16个(默认0)数据库
cpp 复制代码
select 1//切换到编号1这个数据库
  • FLUSHDB: 清空当前数据库所有键,操作不可逆
cpp 复制代码
flushdb
  • FLUSHALL: 清空所有数据库所有键,慎用危险操作
cpp 复制代码
flushall

3.3 服务器管理命令

  • INFO: 返回 Redis 服务器运行状态、配置、客户端连接等详细信息。
  • MONITOR: 实时监控 Redis 服务器接收到的所有命令,调试和性能分析利器。
  • SAVE / BGSAVE: 手动触发持久化操作,前者阻塞阻塞客户端,后者后台异步保存快照
  • 异步保存流程如下:
  • 由于手不灵巧,这里就不画图,直接赘述:首先收到客户端发送的bgsave命令,然后判断有没有正在执行的bgsave,有就返回;没有就使用fork创建子进程,子进程创建失败也返回,父进程继续处理数据,监控子进程;子进程就去进行持久化操作(多进程的特性),子进程处理数据写入生成的临时rdb文件,完成后进行原子性操作重命名,替换,将新的rdb文件替换旧的rdb文件,最后子进程退出,这一流程就完成了

四、Redis基本命令

4.1 连接与认证

  • AUTH password: 当 Redis 配置了访问密码时,客户端必须先认证才能执行后续操作。
  • PING: 测试与服务器的连接是否正常,一般返回 PONG 表示存活。
  • QUIT: 关闭客户端与 Redis 服务器之间的连接,ctrl+c也可以

4.2 事务相关命令

redis的事务就相对于只是打包的功能,然后配合redis的单线程,达到相对于的效果

  • MULTI: 开启事务,之后所有命令将排队等待执行。
cpp 复制代码
multi
  • EXEC: 执行事务队列中的所有命令,具有原子性。
cpp 复制代码
exec
  • DISCARD: 取消当前事务,清空命令队列。
cpp 复制代码
discard
  • redis的事务的"原子性"不是真正的原子性,没有MySQL事务的那么规范,如果像MySQL那么规范的话就没有redis独有的一些功能特点
  • Watch:对指定的key进行监视,相对于加了一把乐观锁,这一命令必须要在事务开启前,
  • 然后在exec执行时判断,外界有没有对其进行更改,有更改就取消事务的执行
cpp 复制代码
watch key

五、五种数据结构类型

5.1 String类型

5.1.1 基本特性

String 是 Redis 中最基本的数据类型,支持二进制安全,最大容量为 512MB,既可以存储字符串,也支持数值类型操作。

5.1.2 常用命令

  • SET key value: 设置字符串值。
  • GET key: 获取字符串值。
  • INCR key / DECR key: 对键对应的数值执行自增自减,键不存在时初始化为0。
  • APPEND key value: 给字符串追加数据。
  • STRLEN key: 获取字符串长度。

5.1.3 应用场景

适用于缓存简单数据、实现计数功能、存储用户会话等。

5.2 List集合类型

5.2.1 基本特性

List 数据结构内部基于双向链表,支持重复元素,保持插入顺序。

5.2.2 常用命令

  • LPUSH/RPUSH: 从左或右插入元素,返回插入成功元素个数
  • LPOP/RPOP: 从左或右弹出元素。
  • LRANGE: 获取指定范围内的元素列表。
  • LLEN: 获取列表长度。
  • push时key不存在会创建一个空的

5.2.3 应用场景

用于消息队列、最新消息缓存、历史数据记录。

5.3 Set集合类型

5.3.1 基本特性

Set 是无序且元素唯一的集合,支持多种集合操作。

5.3.2 常用命令

  • SADD: 添加元素。
  • SMEMBERS: 返回所有元素。
  • SINTER: 多个集合交集。
  • sinterstore:将多个集合交集放到另一个集合中
  • sunionstore:将多个集合并集放到另一个集合中
  • SUNION: 多个集合并集。

5.3.3 应用场景

标签分类、好友关系管理、唯一数据统计。

5.4 Hash集合类型

5.4.1 基本特性

类似于键值对的集合,适合存储对象的属性,支持部分字段操作。

5.4.2 常用命令

  • HSET/HGET: 设置或获取字段值。
  • HGETALL: 获取所有字段及对应的值。
  • HINCRBY: 增加字段数值。
  • HLEN: 获取字段数量。

5.4.3 应用场景

用户信息存储、商品属性配置、系统配置信息。

5.5 Zset有序集合类型

5.5.1 基本特性

基于跳表实现的带权重集合,唯一元素,分数用于排序,但分数可重复。

5.5.2 常用命令

  • ZADD: 添加成员及分数。

  • ZRANGE: 按分数升序查询指定排名区间成员。

  • ZREVRANGE: 按分数降序查询。

  • ZSCORE: 获取成员的分数。

  • zrangebyscore: 按分数范围查询

  • zpopmax:删除集合中score最大的元素

  • zpopmin:删除集合中score最小的元素

  • 还有一些常用命令大体上几个数据结构用法都差不多,就不一一列举了

5.5.3 应用场景

游戏排行榜、延迟任务队列、区间范围筛选。

六、总结

6.1 Redis 优势总结

  • 性能极致的内存数据库: 基于内存存储,读写速度远超传统数据库。
  • 丰富的数据结构支持: 满足复杂多变的业务需求。
  • 持久化与高可用保障: 数据安全有保障,系统稳定可靠。
  • 活跃的社区生态: 丰富的客户端库和工具支持。

6.2 使用建议

  • 根据业务场景选择合适数据结构: 避免滥用,提升性能和逻辑清晰。
  • 合理设置过期时间: 避免内存泄漏。
  • 注意内存使用监控: 预防 OOM 等问题。
  • 生产环境配置持久化: 开启 AOF 或 RDB,防止数据丢失。

6.3 学习路径建议

  • 掌握基础命令和数据类型。
  • 理解各种数据结构应用场景。
  • 通过项目实践加深理解。
  • 深入学习高级功能和性能调优。
  • 可以结合redis++对常用命令进行练习,不会就查文档,有助于对redis的进一步学习

附录:官方文档链接与社区资源推荐

Downloads | Redis

Redis 教程 | 菜鸟教程

相关推荐
冉冰学姐6 小时前
SSM装修服务网站5ff59(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·装修服务网站
库库8397 小时前
Redis分布式锁、Redisson及Redis红锁知识点总结
数据库·redis·分布式
沧澜sincerely7 小时前
Redis 缓存模式与注解缓存
数据库·redis·缓存
_w_z_j_7 小时前
C++----变量存储空间
开发语言·c++
森G7 小时前
2一、u-boot下载编译
linux·arm开发
lingran__7 小时前
算法沉淀第五天(Registration System 和 Obsession with Robots)
c++·算法
莱茶荼菜7 小时前
一个坐标转换
c++·算法
Elastic 中国社区官方博客7 小时前
Elasticsearch 推理 API 增加了开放的可定制服务
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
guguhaohao8 小时前
list,咕咕咕!
数据结构·c++·list
Ching·8 小时前
linux系统编程(十③)RK3568 socket之 TCP 服务器的实现【更新客户端断开重连依旧可以收发】
linux·服务器·tcp/ip·rk3568