Redis基础指令全解析:从入门到精通
目录
一、什么是Redis
1.1 Redis 简介
1.2 Redis 核心特性
1.3 Redis 应用场景
二、安装Redis
2.1 Windows系统安装
2.1.1 安装方式
2.1.2 配置与启动
2.2 Linux系统安装
2.2.1 Ubuntu/CentOS 安装
2.2.2 安装后配置
三、Redis通用命令
3.1 键操作命令
3.2 数据库操作命令
3.3 服务器管理命令
四、Redis基本命令
4.1 连接与认证
4.2 事务相关命令
五、五种数据结构类型
5.1 String类型
5.1.1 基本特性
5.1.2 常用命令
5.1.3 应用场景
5.2 List集合类型
5.2.1 基本特性
5.2.2 常用命令
5.2.3 应用场景
5.3 Set集合类型
5.3.1 基本特性
5.3.2 常用命令
5.3.3 应用场景
5.4 Hash集合类型
5.4.1 基本特性
5.4.2 常用命令
5.4.3 应用场景
5.5 Zset有序集合类型
5.5.1 基本特性
5.5.2 常用命令
5.5.3 应用场景
六、总结
6.1 Redis 优势总结
6.2 使用建议
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)数据库
-
select 1//切换到编号1这个数据库
- FLUSHDB: 清空当前数据库所有键,操作不可逆
-
flushdb
- FLUSHALL: 清空所有数据库所有键,慎用危险操作
-
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: 开启事务,之后所有命令将排队等待执行。
-
multi
- EXEC: 执行事务队列中的所有命令,具有原子性。
-
exec
- DISCARD: 取消当前事务,清空命令队列。
-
discard
- redis的事务的"原子性”不是真正的原子性,没有MySQL事务的那么规范,如果像MySQL那么规范的话就没有redis独有的一些功能特点
- Watch:对指定的key进行监视,相对于加了一把乐观锁,这一命令必须要在事务开启前,
- 然后在exec执行时判断,外界有没有对其进行更改,有更改就取消事务的执行
-
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 教程 | 菜鸟教程