【Redis】Redis常用命令速查表(完整版)

简介: Redis常用命令速查表,涵盖String、List、Hash、Set、ZSet五大核心数据类型的增删改查及原子操作,以及KEY管理、事务、Lua脚本、发布订阅、持久化、监控等运维命令,并附真实业务场景示例与注意事项。

Redis常用命令速查表


一、基础核心类型常用命令

数据类型 命令 核心作用
String SET 设置key-value对,支持过期时间(EX/PX)、存在性判断(NX/XX)等参数
GET 获取指定key的value
SETEX 原子设置key-value对并指定秒级过期时间
SETNX 仅在key不存在时设置value(分布式锁核心)
INCR 将key的整数值自增1
DECR 将key的整数值自减1
INCRBY 将key的整数值自增指定步长
MSET 原子批量设置多个key-value对
MGET 批量获取多个key的value
APPEND 在key的value末尾追加字符串
STRLEN 获取key的value长度
List LPUSH 在列表头部(左侧)插入一个或多个元素
RPUSH 在列表尾部(右侧)插入一个或多个元素
LPOP 移除并返回列表头部(左侧)元素
RPOP 移除并返回列表尾部(右侧)元素
LRANGE 获取列表指定索引范围的元素(0为头,-1为尾)
LINDEX 获取列表指定索引位置的元素
LLEN 获取列表的元素个数
LTRIM 修剪列表,仅保留指定索引范围的元素
BLPOP 阻塞式移除并返回列表头部元素,支持超时等待
BRPOP 阻塞式移除并返回列表尾部元素,支持超时等待
RPOPLPUSH 原子将一个列表尾部元素移到另一个列表头部
Hash HSET 设置哈希表中指定field的value(支持多field)
HGET 获取哈希表中指定field的value
HMSET 批量设置哈希表中多个field-value对
HMGET 批量获取哈希表中多个field的value
HGETALL 获取哈希表中所有field-value对
HKEYS 获取哈希表中所有field
HVALS 获取哈希表中所有value
HINCRBY 将哈希表中指定field的整数值自增指定步长
HEXISTS 判断哈希表中是否存在指定field
HDEL 删除哈希表中一个或多个field
HLEN 获取哈希表中field的数量
Set SADD 向集合中添加一个或多个元素
SREM 从集合中删除一个或多个元素
SISMEMBER 判断元素是否在集合中
SMEMBERS 获取集合中所有元素
SCARD 获取集合的元素个数
SINTER 获取多个集合的交集
SUNION 获取多个集合的并集
SDIFF 获取第一个集合与其他集合的差集
SRANDMEMBER 随机获取集合中一个或多个元素(不删除)
SPOP 随机移除并返回集合中一个或多个元素
ZSet ZADD 向有序集合中添加一个或多个元素及其score
ZREM 从有序集合中删除一个或多个元素
ZRANGE 获取有序集合按score从小到大排序的指定索引范围元素
ZREVRANGE 获取有序集合按score从大到小排序的指定索引范围元素
ZRANGEBYSCORE 获取有序集合中score在指定范围内的元素(从小到大)
ZREVRANGEBYSCORE 获取有序集合中score在指定范围内的元素(从大到小)
ZRANK 获取元素按score从小到大排序的排名(0为最小)
ZREVRANK 获取元素按score从大到小排序的排名(0为最大)
ZINCRBY 将有序集合中指定元素的score自增指定步长
ZCARD 获取有序集合的元素个数
ZCOUNT 获取有序集合中score在指定范围内的元素个数


二、其他类型常用命令

除了基础核心类型的专属命令外,Redis 还有大量跨数据类型、运维管理、功能增强类的常用命令,以下是核心补充:

命令分类 命令 核心作用
全局键操作 DEL 删除一个或多个 key
EXISTS 判断一个或多个 key 是否存在
EXPIRE 为 key 设置秒级过期时间
PEXPIRE 为 key 设置毫秒级过期时间
TTL 查看 key 的剩余秒级过期时间(-1 永久,-2 已过期)
PTTL 查看 key 的剩余毫秒级过期时间
PERSIST 移除 key 的过期时间,使其永久有效
KEYS 查找所有匹配 pattern 的 key(线上环境严禁使用,会阻塞 Redis)
SCAN 增量迭代数据库中的 key,无阻塞替代 KEYS
RENAME 原子重命名 key(若新 key 已存在则覆盖)
RENAMENX 仅在新 key 不存在时重命名
TYPE 查看 key 对应 value 的数据类型
OBJECT 查看 key 的内部编码、引用计数、LRU 时间等底层信息
数据库管理 SELECT 切换到指定数据库(Redis 默认 0-15 共 16 个库)
DBSIZE 查看当前数据库的 key 总数
FLUSHDB 清空当前数据库的所有 key(慎用
FLUSHALL 清空所有数据库的所有 key(极度慎用
事务与 Lua 脚本 MULTI 开启事务块,后续命令入队不执行
EXEC 原子执行事务块中的所有命令
DISCARD 取消事务,清空事务队列
WATCH 监控一个或多个 key,若事务执行前 key 被修改则事务中断(乐观锁)
UNWATCH 取消对所有 key 的监控
EVAL 直接执行 Lua 脚本
EVALSHA 通过脚本 SHA1 校验和执行已缓存的 Lua 脚本,节省带宽
SCRIPT LOAD 将 Lua 脚本加载到缓存但不执行
SCRIPT FLUSH 清空 Lua 脚本缓存
发布订阅 PUBLISH 向指定频道发布消息
SUBSCRIBE 订阅一个或多个指定频道
UNSUBSCRIBE 取消订阅一个或多个指定频道
PSUBSCRIBE 订阅所有匹配 pattern 的频道(模式订阅)
PUNSUBSCRIBE 取消订阅所有匹配 pattern 的频道
持久化 SAVE 同步执行 RDB 持久化(会阻塞 Redis,线上慎用)
BGSAVE 后台异步执行 RDB 持久化
LASTSAVE 查看最后一次成功执行 RDB 持久化的时间戳
BGREWRITEAOF 后台异步重写 AOF 文件,压缩体积
配置与监控 INFO 查看 Redis 服务器的各类信息(内存、CPU、复制、集群等,可加参数如 INFO memory
CONFIG GET 获取 Redis 配置文件的指定参数值
CONFIG SET 动态修改 Redis 配置参数(无需重启,部分参数不支持)
CONFIG REWRITE 将当前配置重写回 redis.conf 配置文件
SLOWLOG GET 获取慢查询日志(可指定条数)
SLOWLOG LEN 获取慢查询日志的条数
SLOWLOG RESET 清空慢查询日志
TIME 获取 Redis 服务器的当前时间戳(秒+微秒)
PING 测试与 Redis 服务器的连接,返回 PONG
客户端管理 CLIENT LIST 查看所有连接到 Redis 的客户端信息
CLIENT KILL 关闭指定的客户端连接
CLIENT GETNAME 获取当前连接的名称
CLIENT SETNAME 为当前连接设置名称,便于排查问题
其他实用 DUMP 序列化指定 key 并返回序列化后的内容
RESTORE 将 DUMP 序列化的内容恢复为 key
MIGRATE 原子将 key 从当前 Redis 实例迁移到另一个实例
WAIT 阻塞等待当前写命令被至少 N 个从节点同步


Redis 常用命令-具体命令行使用示例


一、基础核心类型常用命令示例


一、String(字符串)

命令 业务场景 命令行示例
SET 存储用户ID为1001的JSON信息 SET user:1001 '{"name":"张三","age":25,"city":"广州"}'
分布式锁:仅在lock:order:123不存在时设置,30秒自动过期 SET lock:order:123 "locked" NX PX 30000
GET 读取用户ID为1001的信息 GET user:1001
SETEX 存储验证码code:login:13800138000,180秒(3分钟)过期 SETEX code:login:13800138000 180 "8888"
SETNX 幂等性控制:仅在idempotent:pay:20240501001不存在时设置 SETNX idempotent:pay:20240501001 "processed"
INCR 文章ID为2001的阅读量+1 INCR article:2001:views
DECR 商品ID为3001的库存-1 DECR product:3001:stock
INCRBY 用户ID为1001的积分+100 INCRBY user:1001:points 100
MSET 批量预热商品缓存:同时设置product:2001product:2002 MSET product:2001 '{"name":"iPhone","price":5999}' product:2002 '{"name":"MacBook","price":9999}'
MGET 批量读取用户信息:同时获取user:1001user:1002 MGET user:1001 user:1002
APPEND log:20240501末尾追加日志内容 APPEND log:20240501 " [INFO] User login successful"
STRLEN 查看user:1001的value长度 STRLEN user:1001

二、List(列表)

命令 业务场景 命令行示例
LPUSH 栈结构:向stack:task头部压入任务(LPUSH+LPOP实现栈) LPUSH stack:task "task1" "task2" "task3"
RPUSH 队列结构:向queue:order尾部加入订单(LPUSH+RPOP实现队列) RPUSH queue:order "order:1001" "order:1002" "order:1003"
LPOP queue:order头部消费一个订单 LPOP queue:order
RPOP stack:task尾部弹出一个任务 RPOP stack:task
LRANGE 分页查询消息列表:获取message:list的前10条(0-9) LRANGE message:list 0 9
获取message:list的所有元素(线上长列表禁用 LRANGE message:list 0 -1
LINDEX 获取message:list索引为5的元素 LINDEX message:list 5
LLEN 查看queue:order的待处理订单数 LLEN queue:order
LTRIM 修剪message:list,仅保留最新的100条(0-99) LTRIM message:list 0 99
BLPOP 阻塞式消费任务:永久等待task:queue,直到有任务可消费 BLPOP task:queue 0
阻塞式消费任务:最多等待30秒,超时返回nil BLPOP task:queue 30
BRPOP 阻塞式从尾部消费task:queue BRPOP task:queue 0
RPOPLPUSH 原子将queue:order的尾部订单移到processing:order头部(可靠消费模式) RPOPLPUSH queue:order processing:order

三、Hash(哈希)

命令 业务场景 命令行示例
HSET 存储用户ID为1001的字段:name=张三,age=25 HSET user:1001 name "张三" age 25
更新用户ID为1001的age字段为26 HSET user:1001 age 26
HGET 读取用户ID为1001的name字段 HGET user:1001 name
HMSET 批量设置用户ID为1002的字段(Redis4.0+推荐用HSET替代) HMSET user:1002 name "李四" city "深圳" email "lisi@example.com"
HMGET 批量读取用户ID为1001的name、age、city字段 HMGET user:1001 name age city
HGETALL 读取用户ID为1001的所有字段(线上大Hash禁用 HGETALL user:1001
HKEYS 获取用户ID为1001的所有field HKEYS user:1001
HVALS 获取用户ID为1001的所有value HVALS user:1001
HINCRBY 购物车:用户1001的商品2001数量+1 HINCRBY cart:1001 product:2001 1
购物车:用户1001的商品2001数量-2 HINCRBY cart:1001 product:2001 -2
HEXISTS 判断用户ID为1001的字段email是否存在 HEXISTS user:1001 email
HDEL 删除用户ID为1001的age字段 HDEL user:1001 age
清空购物车:删除用户1001的商品2001和2002 HDEL cart:1001 product:2001 product:2002
HLEN 统计购物车:用户1001的商品种类数 HLEN cart:1001

四、Set(集合)

命令 业务场景 命令行示例
SADD 点赞:用户1001点赞文章2001 SADD like:article:2001 1001
标签:给文章2001添加“Redis”“缓存”“数据库”标签 SADD tag:article:2001 "Redis" "缓存" "数据库"
SREM 取消点赞:用户1001取消点赞文章2001 SREM like:article:2001 1001
SISMEMBER 判断用户1001是否点赞文章2001 SISMEMBER like:article:2001 1001
SMEMBERS 获取文章2001的所有点赞用户(线上大Set禁用 SMEMBERS like:article:2001
SCARD 统计文章2001的点赞数 SCARD like:article:2001
SINTER 共同好友:获取用户1001和1002的共同好友 SINTER friend:1001 friend:1002
标签交集:筛选同时有“Redis”和“缓存”标签的文章 SINTER tag:article:2001 tag:article:2002
SUNION 合并好友:获取用户1001和1002的所有好友(去重) SUNION friend:1001 friend:1002
SDIFF 潜在好友:获取用户1001有但1002没有的好友 SDIFF friend:1001 friend:1002
SRANDMEMBER 随机抽奖:从lottery:users中随机抽取1个不重复用户 SRANDMEMBER lottery:users 1
随机推荐:从lottery:users中随机抽取3个可重复用户 SRANDMEMBER lottery:users -3
SPOP 随机抽奖(不重复):从lottery:users中随机移除并返回1个用户 SPOP lottery:users 1

五、ZSet(有序集合)

命令 业务场景 命令行示例
ZADD 排行榜:初始化用户积分(张三100分,李四200分,王五150分) ZADD rank:score 100 "张三" 200 "李四" 150 "王五"
仅添加新用户:添加赵六120分(若已存在则忽略) ZADD rank:score NX 120 "赵六"
ZREM 移除排行榜中的“赵六” ZREM rank:score "赵六"
ZRANGE 分页查询排行榜:按积分从小到大获取前3名(0-2) ZRANGE rank:score 0 2
分页查询排行榜:按积分从小到大获取前3名,同时返回积分 ZRANGE rank:score 0 2 WITHSCORES
ZREVRANGE 分页查询排行榜:按积分从大到小获取前3名(热门榜) ZREVRANGE rank:score 0 2 WITHSCORES
ZRANGEBYSCORE 延迟队列:获取score(执行时间戳)在0到当前时间之间的到期任务 ZRANGEBYSCORE delay:queue 0 1714500000
积分筛选:获取积分在100到200之间的用户(闭区间) ZRANGEBYSCORE rank:score 100 200 WITHSCORES
积分筛选:获取积分大于100且小于200的用户(开区间,用() ZRANGEBYSCORE rank:score (100 (200 WITHSCORES
ZREVRANGEBYSCORE 积分筛选:按积分从大到小获取100到200之间的用户 ZREVRANGEBYSCORE rank:score 200 100 WITHSCORES
ZRANK 查询张三的排名(按积分从小到大,0为最小) ZRANK rank:score "张三"
ZREVRANK 查询张三的排名(按积分从大到小,0为最大,即热门榜排名) ZREVRANK rank:score "张三"
ZINCRBY 积分增加:张三的积分+50 ZINCRBY rank:score 50 "张三"
积分减少:李四的积分-30 ZINCRBY rank:score -30 "李四"
ZCARD 统计排行榜的总用户数 ZCARD rank:score
ZCOUNT 统计积分在100到200之间的用户数 ZCOUNT rank:score 100 200


二、其他类型常用命令示例


一、全局键操作

命令 场景 命令行示例
DEL 删除名为 user:1001 的缓存 DEL user:1001
批量删除 token:abctoken:def DEL token:abc token:def
EXISTS 判断 product:2001 是否存在 EXISTS product:2001
EXPIRE session:xyz 设置 1800 秒(30分钟)过期 EXPIRE session:xyz 1800
TTL 查看 session:xyz 的剩余过期时间 TTL session:xyz
PERSIST 移除 session:xyz 的过期时间,使其永久有效 PERSIST session:xyz
SCAN 增量迭代当前数据库中所有以 user: 开头的 key(从游标 0 开始,每次返回 10 条) SCAN 0 MATCH user:* COUNT 10
TYPE 查看 cart:1001 的数据类型 TYPE cart:1001
OBJECT 查看 user:1001 的底层编码(如 embstr/hashtable OBJECT ENCODING user:1001

⚠️ 线上严禁使用 KEYS *,会全量遍历阻塞 Redis,一律用 SCAN 替代。

二、数据库管理

命令 场景 命令行示例
SELECT 切换到第 3 号数据库(默认 0-15) SELECT 3
DBSIZE 查看当前数据库的 key 总数 DBSIZE
FLUSHDB 清空当前数据库的所有 key(慎用 FLUSHDB
FLUSHALL 清空所有 16 个数据库的所有 key(极度慎用 FLUSHALL

三、事务与 Lua 脚本

事务

命令 场景 命令行示例
MULTI/EXEC 原子执行“给 user:1001 余额 +100,给 user:1002 余额 -100” MULTI
INCRBY user:1001:balance 100
DECRBY user:1002:balance 100
EXEC
DISCARD 开启事务后取消,清空队列 MULTI
INCR counter
DISCARD
WATCH 监控 stock:2001,若事务执行前被修改则中断(乐观锁) WATCH stock:2001
MULTI
DECR stock:2001
EXEC

Lua 脚本

命令 场景 命令行示例
EVAL 执行简单 Lua 脚本:原子将 counter 自增 1 并返回新值 EVAL "return redis.call('INCR', KEYS[1])" 1 counter
EVALSHA 先加载脚本再通过 SHA1 执行(节省带宽) SCRIPT LOAD "return redis.call('INCR', KEYS[1])"
(假设返回 SHA1:a123...
EVALSHA a123... 1 counter

四、发布订阅

命令 场景 命令行示例
PUBLISH news:tech 频道发布消息“Redis 7.0 发布” PUBLISH news:tech "Redis 7.0 发布"
SUBSCRIBE 订阅 news:tech 频道(阻塞式,收到消息会自动打印) SUBSCRIBE news:tech
PSUBSCRIBE 模式订阅所有以 news: 开头的频道 PSUBSCRIBE news:*

五、持久化

命令 场景 命令行示例
BGSAVE 后台异步生成 RDB 快照(不阻塞 Redis) BGSAVE
BGREWRITEAOF 后台异步重写 AOF 文件,压缩体积 BGREWRITEAOF
LASTSAVE 查看最后一次 RDB 快照成功的时间戳 LASTSAVE

六、配置与监控

命令 场景 命令行示例
INFO 查看 Redis 内存使用详情 INFO memory
查看 Redis 主从复制信息 INFO replication
CONFIG GET 获取当前 maxmemory(最大内存)配置 CONFIG GET maxmemory
CONFIG SET 动态设置 slowlog-log-slower-than(慢查询阈值,单位微秒)为 10000(10ms) CONFIG SET slowlog-log-slower-than 10000
SLOWLOG GET 获取最近 5 条慢查询日志 SLOWLOG GET 5
SLOWLOG RESET 清空慢查询日志 SLOWLOG RESET
PING 测试与 Redis 的连接 PING

七、客户端管理

命令 场景 命令行示例
CLIENT SETNAME 为当前连接设置名称“my-app-connection”,便于排查问题 CLIENT SETNAME my-app-connection
CLIENT LIST 查看所有连接到 Redis 的客户端信息 CLIENT LIST
CLIENT GETNAME 获取当前连接的名称 CLIENT GETNAME

八、其他实用命令

命令 场景 命令行示例
DUMP 序列化 user:1001 并打印结果 DUMP user:1001
RESTORE 将 DUMP 序列化的内容恢复为 user:1001-backup(TTL 0 表示永久) RESTORE user:1001-backup 0 "<序列化内容>"
相关文章
|
1天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
10056 22
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
13天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5808 14
|
20天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
22664 119

热门文章

最新文章