Redis 常用命令
| 功能 |
命令 |
说明 |
| 查看所有 key |
KEYS pattern |
生产环境禁止使用,会阻塞 |
| 模糊匹配扫描 |
SCAN cursor [MATCH pattern] [COUNT n] |
安全替代 KEYS |
| 查看 key 类型 |
TYPE key |
字符串、list、hash 等 |
| 查看 key 存在 |
EXISTS key |
返回存在数量 |
| 删除 key |
DEL key1 key2… |
支持多 key |
| 过期时间 |
EXPIRE key 60 |
设置 TTL |
| 查看 TTL |
TTL key |
剩余秒数 |
| 持久化 key |
PERSIST key |
移除过期时间 |
| 操作 |
命令 |
| 设置值 |
SET key value |
| 设置值 + 过期 |
SETEX key 60 value |
| 获取值 |
GET key |
| 批量操作 |
MSET k1 v1 k2 v2 / MGET k1 k2 |
| 追加字符串 |
APPEND key value |
| 数值自增 |
INCR key、INCRBY key n |
| 数值自减 |
DECR key、DECRBY key n |
| 字符串长度 |
STRLEN key |
| 截取片段 |
GETRANGE key start end |
✅ 使用场景:缓存、计数器、分布式锁(SET NX EX)
键 = key,字段 = field
| 操作 |
命令 |
| 设置字段 |
HSET key field value |
| 获取字段 |
HGET key field |
| 同时设置多个字段 |
HMSET key f1 v1 f2 v2 |
| 获取多个字段 |
HMGET key f1 f2 |
| 查看所有字段与值 |
HGETALL key |
| 字段是否存在 |
HEXISTS key field |
| 删除字段 |
HDEL key field1 field2 |
| 查看所有字段 |
HKEYS key |
| 查看所有值 |
HVALS key |
| 数值自增 |
HINCRBY key field n |
✅ 使用场景:用户信息(id -> JSON),购物车等。
| 操作 |
命令 |
| 左插入 |
LPUSH key v1 v2 |
| 右插入 |
RPUSH key v1 v2 |
| 左弹出 |
LPOP key |
| 右弹出 |
RPOP key |
| 获取区间 |
LRANGE key 0 -1 |
| 列表长度 |
LLEN key |
| 按下标取值 |
LINDEX key index |
| 修改某一项 |
LSET key index value |
| 阻塞弹出 |
BLPOP key timeout(常用于队列) |
✅ 使用场景:消息队列、不严格顺序的排队系统。
| 操作 |
命令 |
| 添加元素 |
SADD key member1 member2 |
| 移除元素 |
SREM key m1 m2 |
| 是否存在 |
SISMEMBER key member |
| 获取所有元素 |
SMEMBERS key |
| 集合大小 |
SCARD key |
| 随机弹出 |
SPOP key [count] |
| 随机获取 |
SRANDMEMBER key [count] |
| 交集 |
SINTER key1 key2 |
| 并集 |
SUNION key1 key2 |
| 差集 |
SDIFF key1 key2 |
✅ 使用场景:点赞、标签系统、好友列表。
| 操作 |
命令 |
| 添加成员 |
ZADD key score member |
| 删除成员 |
ZREM key member |
| 获取分数 |
ZSCORE key member |
| 获取排名(从小到大) |
ZRANK key member |
| 获取倒序排名 |
ZREVRANK key member |
| 增加分数 |
ZINCRBY key increment member |
| 区间查询 |
ZRANGE key start stop [WITHSCORES] |
| 倒序区间查询 |
ZREVRANGE key 0 10 WITHSCORES |
| 按分数区间查 |
ZRANGEBYSCORE key min max |
✅ 使用场景:排行榜、延时队列(score = 时间戳)。
| 操作 |
命令 |
| 设置某一位 |
SETBIT key offset value |
| 获取某一位 |
GETBIT key offset |
| 统计 1 的个数 |
BITCOUNT key |
✅ 使用场景:签到系统、在线状态。
| 操作 |
命令 |
| 添加 |
PFADD key value |
| 统计 |
PFCOUNT key |
| 合并 |
PFMERGE dest key1 key2 |
✅ 使用场景:UV 统计、唯一用户量。
| 操作 |
命令 |
| 开始 |
MULTI |
| 提交 |
EXEC |
| 取消 |
DISCARD |
| 监控 key |
WATCH key |
| 取消监控 |
UNWATCH |
✅ 使用场景:乐观锁、原子操作。
| 操作 |
命令 |
| 执行脚本 |
EVAL “lua_script” numkeys key1 value1 … |
| 执行缓存脚本 |
EVALSHA sha1 … |
✅ 使用场景:分布式锁、限流、复杂原子操作。
| 目的 |
命令 |
| 查看 Redis 信息 |
INFO |
| 查看 key 大小排序 |
MEMORY USAGE key |
| 查看命令执行统计 |
INFO commandstats |
| 查看慢查询 |
SLOWLOG get 10 |
| 清空当前 DB |
FLUSHDB |
| 清空所有 DB |
FLUSHALL |
| 查看所有 DB 使用情况 |
INFO keyspace |
| 操作 |
命令 |
| 触发 RDB 保存 |
SAVE(阻塞) / BGSAVE(后台) |
| 重写 AOF |
BGREWRITEAOF |
| 查看持久化状态 |
INFO persistence |
| 操作 |
命令 |
| 查看复制信息 |
INFO replication |
| 设置主库 |
SLAVEOF host port |
| 取消主从 |
SLAVEOF NO ONE |
| 获取同步偏移量 |
WAIT numslaves timeout |
| 操作 |
命令 |
| 查看集群状态 |
CLUSTER INFO |
| 查看节点 |
CLUSTER NODES |
| 手动创建集群 |
redis-cli –cluster create … |
| 检查集群 |
redis-cli –cluster check host:port |
| 修复集群 |
redis-cli –cluster fix host:port |
| 动作 |
命令 |
| 查看槽位分配 |
CLUSTER SLOTS |
| 将槽从 A 迁移到 B |
CLUSTER SETSLOT slot MIGRATING node-id |
| 接收槽迁移 |
CLUSTER SETSLOT slot IMPORTING node-id |
| 槽绑定主节点 |
CLUSTER SETSLOT slot NODE node-id |
| 操作 |
命令 |
| 加入节点 |
CLUSTER MEET ip port |
| 移除节点 |
CLUSTER FORGET node-id |
| 删除 fail 标记 |
CLUSTER RESET |
| 手动 failover |
CLUSTER FAILOVER |
| 模拟节点失败 |
CLUSTER DEBUG |
集群中 强制多个 key 分配到同一槽
SET user:{1}:name martin
SET user:{1}:age 20
✅ {} 里面的内容决定槽位。
| 操作 |
命令 |
| 原子上锁 |
SET lock_key uuid NX EX 10 |
| Lua 解锁 |
EVAL “if redis.call(‘get’,KEYS[1])==ARGV[1] then return redis.call(‘del’,KEYS[1]) else return 0 end” 1 lock_key uuid |
| 场景 |
命令 |
| 测试某命令耗时 |
DEBUG SLEEP 1 |
| 模拟 key 过期 |
EXPIRE key 1 |
| 查看内存占用(精确) |
MEMORY USAGE key |
| 分析大 key |
–bigkeys(redis-cli 工具) |
- SET / GET / DEL / EXPIRE
- HSET / HGET / HGETALL
- LPUSH / BRPOP
- ZADD / ZRANGE / ZREVRANGE
- SCAN
- MULTI / EXEC
- INFO / SLOWLOG / MEMORY
- CLUSTER NODES / CLUSTER INFO
- SET NX EX(分布式锁)
- Lua + EVAL
这些全部掌握,Redis 就算通了。