🗝️ 一、通用命令与基础入门
这些命令适用于所有数据类型的键,用于管理和操作Redis键。
1.1 连接与基础操作
操作 | 命令 | 说明 |
|---|---|---|
启动Redis服务 |
| 启动Redis服务器,可指定配置文件。 |
客户端连接 |
| 连接到Redis服务器,默认连接本地6379端口。 |
测试连通性 |
| 若服务器运行正常,返回 |
关闭服务 |
| 在redis-cli中执行,安全关闭Redis服务器。 |
退出客户端 |
| 退出redis-cli客户端。 |
1.2 数据库操作
操作 | 命令 | 说明 |
|---|---|---|
切换数据库 |
| Redis默认有16个数据库(0-15),该命令用于切换。 |
数据迁移 |
| 将指定的key移动到另一个数据库中。 |
清空当前库 |
| 删除当前数据库中的所有key。 |
清空所有库 |
| 删除所有数据库中的所有key,高危命令,谨慎使用。 |
1.3 Key操作
操作 | 命令 | 说明 |
|---|---|---|
查找Key |
| 查找所有符合给定模式的key。生产环境慎用( |
判断Key是否存在 |
| 检查给定key是否存在,返回存在的个数。 |
查看Key类型 |
| 返回key所储存的值的类型(string, list, set, zset, hash等)。 |
删除Key |
| 删除指定的key,同步阻塞操作。 |
异步删除Key |
| 与 |
修改Key名称 |
| 重命名key,若 |
条件重命名 |
| 仅当 |
设置过期时间 |
| 为key设置生存时间(秒)。 |
设置过期时间 |
| 为key设置生存时间(毫秒)。 |
设置过期时间点 |
| 设置key的过期UNIX时间戳(秒)。 |
查看剩余时间 |
| 查看key剩余生存时间(秒),返回 |
查看剩余时间 |
| 查看key剩余生存时间(毫秒)。 |
移除过期时间 |
| 移除key的过期时间,使其成为永久key。 |
随机返回Key |
| 从当前数据库随机返回一个key。 |
序列化Key值 |
| 序列化给定key,并返回被序列化的值。 |
查看Key数量 |
| 返回当前数据库的key总数。 |
🧱 二、基础数据类型命令
2.1 字符串 (String)
字符串是Redis最基础的数据类型,一个键最大可存储512MB的值,且是二进制安全的,可以存储任何数据,如数字、字符串、图片等。
操作 | 命令 | 说明 |
|---|---|---|
设置值 | `SET key value [EX seconds] [PX milliseconds] [NX | XX]` |
获取值 |
| 获取key的值。 |
批量设置 |
| 同时设置多个key-value对。 |
批量获取 |
| 获取所有(一个或多个)给定key的值。 |
条件设置(存在) |
| 仅当key不存在时才设置值,常用于分布式锁。 |
带过期时间设置 |
| 设置key的值并同时指定过期时间(秒)。 |
设置新值返回旧值 |
| 将key的值设为新值,并返回旧值。注意: Redis 6.2.0后已标记为过时,可用 |
追加值 |
| 将value追加到key原值的末尾。 |
获取子串 |
| 返回key中字符串值的子字符。 |
设置子串 |
| 用value覆写给定key的字符串值,从偏移量offset开始。 |
获取字符串长度 |
| 返回key所储存的字符串值的长度。 |
递增 |
| 将key中储存的数字值加1。 |
递减 |
| 将key中储存的数字值减1。 |
按指定值递增 |
| 将key所储存的值加上给定的增量值。 |
按指定值递减 |
| 将key所储存的值减去给定的减量值。 |
浮点数递增 |
| 将key所储存的值加上给定的浮点增量值。 |
2.2 哈希 (Hash)
Hash是一个键值对集合,适合用于存储对象(如用户信息)。每个Hash可以存储约40亿个字段。
操作 | 命令 | 说明 |
|---|---|---|
设置单个字段 |
| 设置哈希表中指定字段的值。 |
获取单个字段 |
| 获取哈希表中指定字段的值。 |
批量设置 |
| 批量设置哈希表中的多个字段值。 |
批量获取 |
| 批量获取哈希表中的多个字段值。 |
获取所有字段和值 |
| 返回哈希表中所有的字段和值。生产环境慎用,可能导致阻塞。 |
删除字段 |
| 删除哈希表中的一个或多个字段。 |
条件设置 |
| 仅当字段不存在时,才设置其值。 |
判断字段是否存在 |
| 判断哈希表中指定字段是否存在。 |
获取字段数量 |
| 获取哈希表中字段的数量。 |
获取所有字段名 |
| 获取哈希表中的所有字段名。 |
获取所有值 |
| 获取哈希表中的所有值。 |
整数递增 |
| 为哈希表中指定字段的整数值加上增量。 |
浮点数递增 |
| 为哈希表中指定字段的浮点数值加上增量。 |
2.3 列表 (List)
List是一个简单的字符串列表,基于双向链表实现,因此从头部或尾部插入、删除元素都非常快,常用于实现消息队列、时间线等。
操作 | 命令 | 说明 |
|---|---|---|
左插入 |
| 将一个或多个值插入到列表头部。 |
右插入 |
| 将一个或多个值插入到列表尾部。 |
获取范围 |
| 获取列表指定范围内的元素。 |
左弹出 |
| 移除并返回列表的头元素。 |
右弹出 |
| 移除并返回列表的尾元素。 |
获取长度 |
| 返回列表的长度。 |
根据索引获取 |
| 通过索引获取列表中的元素。 |
根据值删除 |
| 根据参数 |
修剪列表 |
| 只保留列表指定区间内的元素,不在指定区间内的元素都将被删除。 |
插入元素 |
| 在列表的某个元素( |
阻塞弹出 |
|
|
源右弹,目标左压 |
| 将 |
2.4 集合 (Set)
Set是一个无序且不重复的字符串集合,支持集合间的交、并、差运算,适合用于标签系统、共同好友等场景。
操作 | 命令 | 说明 |
|---|---|---|
添加元素 |
| 向集合中添加一个或多个成员。 |
删除元素 |
| 移除集合中的一个或多个成员。 |
获取所有成员 |
| 返回集合中的所有成员。慎用,可能阻塞。 |
判断成员是否存在 |
| 判断member元素是否是集合key的成员。 |
获取成员数量 |
| 返回集合中成员的数量。 |
随机获取 |
| 从集合中随机返回一个或多个元素。 |
随机弹出 |
| 随机移除并返回集合中的一个或多个元素。 |
交集 |
| 返回给定所有集合的交集。 |
并集 |
| 返回给定所有集合的并集。 |
差集 |
| 返回第一个集合与其他集合的差集。 |
将结果存储 |
| 计算交集并将结果存储到 |
2.5 有序集合 (Sorted Set / ZSet)
ZSet和Set一样也是字符串的集合,但每个元素都关联一个score(分数),并以此进行排序。常用于排行榜、优先级队列等。
操作 | 命令 | 说明 |
|---|---|---|
添加元素 |
| 向有序集合中添加一个或多个成员,或更新已存在成员的分数。 |
删除元素 |
| 移除有序集合中的一个或多个成员。 |
获取数量 |
| 返回有序集合的成员数量。 |
获取分数 |
| 返回成员的分数值。 |
增加分数 |
| 为有序集合成员的分数值加上增量 |
升序获取 |
| 按分数值升序返回指定区间内的成员。 |
降序获取 |
| 按分数值降序返回指定区间内的成员。 |
按分数范围获取 |
| 按分数值升序返回指定分数范围内的成员。 |
按排名删除 |
| 移除有序集合中给定的排名区间的所有成员。 |
按分数删除 |
| 移除有序集合中给定的分数区间的所有成员。 |
🚀 三、高级数据类型与功能命令
3.1 位图 (Bitmap)
Bitmap不是一种独立的数据类型,而是基于String类型实现的位操作,适合用于记录签到、用户在线状态等。
操作 | 命令 | 说明 |
|---|---|---|
设置位值 |
| 对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
获取位值 |
| 对key所储存的字符串值,获取指定偏移量上的位(bit)。 |
统计为1的位数 |
| 统计字符串被设置为1的bit数。 |
位操作 |
| 对一个或多个key执行位操作(AND, OR, XOR, NOT),并将结果保存到 |
查找第一个指定值的位 |
| 返回字符串中第一个被设置为1或0的bit的位置。 |
3.2 基数统计 (HyperLogLog)
HyperLogLog是一种概率数据结构,用于以极小的内存(约12KB)对海量数据进行基数统计(去重计数),但结果有0.81%的标准误差。
操作 | 命令 | 说明 |
|---|---|---|
添加元素 |
| 将元素添加到HyperLogLog结构中。 |
统计基数 |
| 返回给定HyperLogLog的基数估算值。 |
合并 |
| 将多个HyperLogLog合并为一个,并存储到 |
3.3 地理位置 (Geo)
Geo用于处理地理位置信息,其底层实现是有序集合(ZSet),可用于实现附近的人、计算两地距离等功能。
操作 | 命令 | 说明 |
|---|---|---|
添加位置 |
| 将指定的地理空间位置(经度、纬度、名称)添加到指定的key中。 |
计算距离 |
| 返回两个给定位置之间的距离。 |
获取坐标 |
| 返回一个或多个位置元素的经度和纬度。 |
获取Hash |
| 返回一个或多个位置元素的Geohash表示。 |
半径查询 |
| 以给定的经纬度为中心,返回指定半径内的所有位置元素。 |
成员半径查询 |
| 以给定成员为中心,返回指定半径内的所有位置元素。 |
3.4 流 (Stream)
Stream是Redis 5.0引入的日志数据结构,用于构建消息队列、事件溯源等场景,支持消费者组。
操作 | 命令 | 说明 |
|---|---|---|
添加消息 |
| 向Stream中添加一条消息。使用 |
读取消息 |
| 从一个或多个Stream中读取数据,支持阻塞读取。 |
范围查询 |
| 返回Stream中指定ID范围内的消息。 |
反向范围查询 |
| 反向返回Stream中指定ID范围内的消息。 |
获取长度 |
| 返回Stream中的消息数量。 |
删除消息 |
| 从Stream中删除指定ID的消息。 |
消费者组 |
| 创建消费者组。 |
消费者组读取 |
| 消费者组读取消息, |
确认消息 |
| 确认消息已处理,将其从pending列表中移除。 |
3.5 JSON (RedisJSON)
RedisJSON模块提供了原生JSON数据类型,可以高效地存储、更新和查询JSON文档。
操作 | 命令 | 说明 |
|---|---|---|
设置JSON |
| 在指定路径设置JSON值。 |
获取JSON |
| 获取指定路径的JSON值。 |
删除JSON |
| 删除指定路径的JSON值。 |
追加数组 |
| 向JSON数组末尾追加一个或多个值。 |
获取类型 |
| 获取指定路径的JSON值类型。 |
3.6 全文搜索 (RediSearch)
RediSearch模块提供了全文索引、聚合查询和高级搜索功能。
操作 | 命令 | 说明 |
|---|---|---|
创建索引 |
| 创建全文索引,定义字段及其类型。 |
搜索 |
| 执行搜索查询。 |
聚合查询 |
| 对搜索结果执行聚合操作(如分组、排序、转换)。 |
删除索引 |
| 删除索引, |
添加文档 |
| 索引创建后,向关联的Hash或JSON键添加数据即可自动索引。 |
3.7 时序数据 (RedisTimeSeries)
RedisTimeSeries模块专为处理时序数据(如IoT传感器数据、监控指标)而设计。
操作 | 命令 | 说明 |
|---|---|---|
创建时间序列 |
| 创建一个新的时间序列。 |
添加数据点 |
| 向时间序列中添加一个数据点。 |
范围查询 |
| 查询指定时间范围内的数据点。 |
获取最新值 |
| 获取时间序列的最新值。 |
聚合查询 |
| 在多个时间序列上执行聚合范围查询。 |
⚙️ 四、核心机制与运维命令
4.1 发布与订阅 (Pub/Sub)
Redis发布订阅是一种消息通信模式,发送者发布消息,订阅者接收消息,但消息不会持久化。
操作 | 命令 | 说明 |
|---|---|---|
订阅频道 |
| 订阅一个或多个频道。 |
发布消息 |
| 向指定频道发布一条消息。 |
取消订阅 |
| 退订指定频道,不带参数则退订所有频道。 |
模式订阅 |
| 订阅与给定模式匹配的频道。 |
查看订阅 |
| 列出当前活跃的频道。 |
4.2 事务 (Transactions)
Redis事务通过MULTI、EXEC、DISCARD和WATCH命令实现,可以一次性执行多个命令,但不支持回滚。
操作 | 命令 | 说明 |
|---|---|---|
开启事务 |
| 标记一个事务块的开始。 |
执行事务 |
| 执行事务队列中的所有命令。 |
取消事务 |
| 取消事务,清空命令队列。 |
监视Key |
| 在事务开始前监视一个或多个key。若在 |
取消监视 |
| 取消对所有key的监视。 |
4.3 Lua脚本 (Scripting)
通过EVAL命令,可以将Lua脚本发送到Redis服务器执行,保证脚本内命令的原子性。
操作 | 命令 | 说明 |
|---|---|---|
执行脚本 |
| 执行Lua脚本, |
通过SHA执行 |
| 根据缓存中脚本的SHA1校验和来执行脚本,可减少带宽。 |
加载脚本 |
| 将脚本加载到脚本缓存,但不执行,返回SHA1校验和。 |
检查脚本是否存在 |
| 检查一个或多个脚本是否在缓存中。 |
清空脚本缓存 |
| 清空所有脚本缓存。 |
4.4 持久化 (Persistence)
Redis提供了RDB和AOF两种持久化机制。
操作 | 命令 | 说明 |
|---|---|---|
同步保存RDB |
| 同步生成RDB快照,会阻塞主线程,生产环境不建议使用。 |
异步保存RDB |
| 在后台异步生成RDB快照,由子进程执行,不阻塞主线程。 |
获取上次保存时间 |
| 返回最近一次成功将数据保存到磁盘的UNIX时间戳。 |
重写AOF文件 |
| 在后台异步重写AOF文件,优化其体积。 |
4.5 集群与高可用 (Cluster&Sentinel)
用于管理Redis集群和Sentinel哨兵模式。
操作 | 命令 | 说明 |
|---|---|---|
主从复制 |
| 将当前服务器设置为指定主服务器的从节点。 |
查看集群信息 |
| 返回集群的基本状态信息。 |
查看集群节点 |
| 列出集群中所有节点的详细信息。 |
分配槽 |
| 将指定的哈希槽分配给当前节点。 |
查看Sentinel监控的主节点 |
| 列出被Sentinel监控的所有主节点信息。 |
获取主节点地址 |
| 根据主节点名称获取其地址。 |
4.6 系统管理与监控 (Server Management)
用于查看服务器状态、管理客户端连接等。
操作 | 命令 | 说明 |
|---|---|---|
查看服务器信息 |
| 返回服务器状态信息,如内存、CPU、持久化、复制等。 |
查看客户端列表 |
| 列出所有已连接的客户端信息。 |
关闭客户端连接 |
| 关闭指定的客户端连接。 |
监控命令执行 |
| 实时打印服务器收到的所有命令,生产环境慎用。 |
慢查询日志 |
| 返回最近 |
重置慢查询日志 |
| 清空慢查询日志。 |
配置管理 |
| 获取、设置或重写Redis配置文件中的参数。 |
内存诊断 |
| 分析内存使用情况并给出建议。 |
内存使用分析 |
| 估算key的内存使用情况。 |
4.7 客户端管理 (Client Management)
操作 | 命令 | 说明 |
|---|---|---|
设置客户端名称 |
| 为当前连接设置一个名称。 |
获取客户端名称 |
| 返回当前连接设置的名称。 |
暂停客户端命令 |
| 在指定时间内暂停处理客户端的命令。 |
解除暂停 |
| 立即解除客户端的暂停状态。 |
回复跟踪 |
| 启用/禁用客户端缓存跟踪功能。 |
以上内容主要基于Redis 6.0到8.0版本的常用命令,部分高级模块(如JSON、Search、TimeSeries)的功能可能因版本和部署环境而异。