Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Redis 常用命令

一、键(Key)操作

功能 命令 说明
查看所有 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 移除过期时间

二、字符串 String

操作 命令
设置值 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)

三、哈希 Hash

键 = 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),购物车等。

四、列表 List(链表)

操作 命令
左插入 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(常用于队列)

✅ 使用场景:消息队列、不严格顺序的排队系统。

五、集合 Set(无序去重)

操作 命令
添加元素 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

✅ 使用场景:点赞、标签系统、好友列表。

六、有序集合 Sorted Set(排行榜)

操作 命令
添加成员 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 = 时间戳)。

七、位图 Bitmap(高效布尔数组)

操作 命令
设置某一位 SETBIT key offset value
获取某一位 GETBIT key offset
统计 1 的个数 BITCOUNT key

✅ 使用场景:签到系统、在线状态。

八、HyperLogLog(去重计数)

操作 命令
添加 PFADD key value
统计 PFCOUNT key
合并 PFMERGE dest key1 key2

✅ 使用场景:UV 统计、唯一用户量。

九、事务 Transaction

操作 命令
开始 MULTI
提交 EXEC
取消 DISCARD
监控 key WATCH key
取消监控 UNWATCH

✅ 使用场景:乐观锁、原子操作。

十、Lua 脚本

操作 命令
执行脚本 EVAL “lua_script” numkeys key1 value1 …
执行缓存脚本 EVALSHA sha1 …

✅ 使用场景:分布式锁、限流、复杂原子操作。

十一、Redis 信息查看 & 运维

目的 命令
查看 Redis 信息 INFO
查看 key 大小排序 MEMORY USAGE key
查看命令执行统计 INFO commandstats
查看慢查询 SLOWLOG get 10
清空当前 DB FLUSHDB
清空所有 DB FLUSHALL
查看所有 DB 使用情况 INFO keyspace

十二、Redis 持久化 AOF / RDB

操作 命令
触发 RDB 保存 SAVE(阻塞) / BGSAVE(后台)
重写 AOF BGREWRITEAOF
查看持久化状态 INFO persistence

十三、Redis 主从(Replication)

操作 命令
查看复制信息 INFO replication
设置主库 SLAVEOF host port
取消主从 SLAVEOF NO ONE
获取同步偏移量 WAIT numslaves timeout

十四、Redis 集群(重点)

1. 集群节点相关命令

操作 命令
查看集群状态 CLUSTER INFO
查看节点 CLUSTER NODES
手动创建集群 redis-cli –cluster create …
检查集群 redis-cli –cluster check host:port
修复集群 redis-cli –cluster fix host:port

2. 槽位操作

动作 命令
查看槽位分配 CLUSTER SLOTS
将槽从 A 迁移到 B CLUSTER SETSLOT slot MIGRATING node-id
接收槽迁移 CLUSTER SETSLOT slot IMPORTING node-id
槽绑定主节点 CLUSTER SETSLOT slot NODE node-id

3. 节点管理

操作 命令
加入节点 CLUSTER MEET ip port
移除节点 CLUSTER FORGET node-id
删除 fail 标记 CLUSTER RESET
手动 failover CLUSTER FAILOVER
模拟节点失败 CLUSTER DEBUG

4. 带 hash 标签的 key

集群中 强制多个 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

十六、Redis 专业级调试技巧

场景 命令
测试某命令耗时 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 就算通了。