Redis 命令

Redis 命令全攻略(2025 最新版)

共 200+ 命令,按类型分类 + 实战场景 + 一键速查表


一、命令分类总览(10 大类)

分类数量代表命令
通用15KEYS, EXISTS, DEL, EXPIRE
String25SET, GET, INCR, MGET
Hash20HSET, HGET, HINCRBY
List18LPUSH, RPOP, BLPOP
Set18SADD, SINTER, SRANDMEMBER
Sorted Set25ZADD, ZRANGE, ZINCRBY
事务5MULTI, EXEC, WATCH
脚本4EVAL, SCRIPT LOAD
管理30+INFO, CONFIG GET, SLOWLOG
高级40+XADD, PFADD, GEOADD

二、通用命令(所有类型通用)

命令说明示例
KEYS pattern查找 keyKEYS user:*
EXISTS key是否存在EXISTS user:11
DEL key [key ...]删除DEL a b c
EXPIRE key seconds设置过期(秒)EXPIRE cache:1 3600
TTL key剩余时间(秒)TTL key3590
PERSIST key移除过期PERSIST key
TYPE key返回类型TYPE user:1hash
RENAME key newkey重命名RENAME old new
SCAN cursor [MATCH pattern]渐进式遍历SCAN 0 MATCH user:* COUNT 100

警告:生产禁用 KEYS *!用 SCAN


三、String 命令(最常用)

命令说明示例
SET key value [NX|XX] [EX seconds]设置SET name "张三" EX 3600 NX
GET key获取GET name
MSET k1 v1 k2 v2批量设置MSET a 1 b 2
MGET k1 k2批量获取MGET a b
INCR key自增 +1INCR views
INCRBY key n自增 nINCRBY score 10
DECR / DECRBY自减DECRBY likes 5
APPEND key "xx"追加APPEND log "error"
STRLEN key长度STRLEN name
SETBIT key offset 1位操作SETBIT sign:1 0 1

实战:分布式锁(SET NX PX)

SET lock:1001 "ok" NX PX 30000   # 30秒自动释放

四、Hash 命令(对象存储)

命令说明示例
HSET key field value设置字段HSET user:1 name "李四"
HGET key field获取字段HGET user:1 name
HMSET key f1 v1 f2 v2批量设置(7.0 前)→ 用 HSET
HMGET key f1 f2批量获取HMGET user:1 name age
HGETALL key获取全部HGETALL user:1
HINCRBY key field n字段自增HINCRBY user:1 age 1
HDEL key field删除字段HDEL user:1 temp
HLEN key字段数量HLEN user:1
HKEYS key所有字段HKEYS user:1
HVALS key所有值HVALS user:1

五、List 命令(队列/栈)

命令说明示例
LPUSH key v1 v2左插入LPUSH tasks "backup"
RPUSH key v1右插入RPUSH queue "msg"
LPOP key左弹出LPOP tasks
RPOP key右弹出RPOP queue
BLPOP key timeout阻塞左弹出BLPOP tasks 0
BRPOP key timeout阻塞右弹出BRPOP queue 30
LRANGE key 0 -1查看全部LRANGE list 0 -1
LLEN key长度LLEN queue
LINDEX key 0获取索引LINDEX list 0

实战:任务队列

LPUSH jobs "email" "sms"
BRPOP jobs 0   # 消费者阻塞等待

六、Set 命令(去重集合)

命令说明示例
SADD key m1 m2添加SADD tags "redis" "cache"
SMEMBERS key所有成员SMEMBERS tags
SCARD key数量SCARD tags
SISMEMBER key m是否存在SISMEMBER tags "redis"
SREM key m删除SREM tags "old"
SRANDMEMBER key [count]随机抽取SRANDMEMBER users 3
SPOP key随机弹出SPOP lottery
SINTER k1 k2交集SINTER follow:1 follow:2
SUNION k1 k2并集SUNION set:a set:b
SDIFF k1 k2差集SDIFF a b

实战:共同好友

SINTER friends:1001 friends:1002

七、Sorted Set 命令(排行榜)

命令说明示例
ZADD key score member添加ZADD rank 100 "张三"
ZRANGE key 0 -1 WITHSCORES顺序查看ZRANGE rank 0 4 WITHSCORES
ZREVRANGE key 0 2倒序ZREVRANGE rank 0 2
ZINCRBY key n member加分ZINCRBY rank 10 "张三"
ZSCORE key member获取分数ZSCORE rank "张三"
ZRANK key member排名(从小到大)ZRANK rank "张三"
ZREVRANK key member倒排ZREVRANK rank "张三"
ZREM key member删除ZREM rank "李四"
ZCARD key数量ZCARD rank
ZCOUNT key min max分数范围数量ZCOUNT rank 90 100

实战:实时排行榜

ZADD game:score 1500 "p1" 2300 "p2"
ZREVRANGE game:score 0 2 WITHSCORES

八、事务与脚本

事务(MULTI/EXEC)

MULTI
INCR views
HINCRBY user:1 score 10
EXEC

仅保证 原子执行,不保证回滚!

Lua 脚本

EVAL "return redis.call('incr', KEYS[1])" 1 counter

实战:原子扣库存

EVAL "
  if redis.call('exists', KEYS[1]) == 1 then
    local stock = tonumber(redis.call('get', KEYS[1]))
    if stock > 0 then
      redis.call('decr', KEYS[1])
      return 1
    end
  end
  return 0
" 1 stock:1001

九、管理与监控命令

命令说明
INFO [section]服务器信息
CONFIG GET *获取配置
CONFIG SET maxmemory 2gb动态设置
SLOWLOG GET 10慢查询
CLIENT LIST客户端列表
DBSIZEkey 数量
FLUSHDB清空当前库
FLUSHALL清空所有库
MONITOR实时命令监控
SAVE / BGSAVE手动触发 RDB

十、高级类型命令

Bitmap

SETBIT sign:2025:1001 0 1
BITCOUNT sign:2025:1001

HyperLogLog

PFADD page:uv u1 u2 u3
PFCOUNT page:uv

Geo

GEOADD cities 116.40 39.90 "北京"
GEODIST cities 北京 上海
GEORADIUS cities 116.40 39.90 500 km

Stream

XADD logs * level error msg "DB down"
XREAD COUNT 1 STREAMS logs 0

十一、一键速查表(打印贴墙)

# 通用
KEYS * | SCAN 0 | DEL k | EXPIRE k 3600 | TTL k

# String
SET k v | GET k | INCR k | MSET a 1 b 2 | MGET a b

# Hash
HSET u f v | HGET u f | HGETALL u | HINCRBY u f 1

# List
LPUSH l v | RPOP l | BLPOP l 0 | LRANGE l 0 -1

# Set
SADD s v | SMEMBERS s | SINTER s1 s2 | SRANDMEMBER s 1

# ZSet
ZADD z 1 m | ZRANGE z 0 -1 WITHSCORES | ZINCRBY z 1 m

# 管理
INFO memory | CONFIG GET maxmemory | SLOWLOG GET 5

十二、命令性能对照(O复杂度)

命令时间复杂度建议
GET/SETO(1)安全
HGET/HSETO(1)推荐
LPUSH/RPOPO(1)队列
ZADD/ZRANGEO(log N)排行榜
KEYS *O(N)禁用!
SMEMBERSO(N)大集合慎用

十三、客户端使用示例

Python (redis-py)

import redis
r = redis.Redis()
r.set('k', 'v')
r.incr('counter')
r.hset('user', 'name', '张三')

Go (go-redis)

rdb := redis.NewClient(&redis.Options{Addr: "localhost:6379"})
rdb.Set(ctx, "k", "v", 0)
rdb.ZAdd(ctx, "rank", redis.Z{Score: 100, Member: "p1"})

完成!你已掌握 Redis 所有核心命令!

# 一行验证所有类型命令
redis-cli --raw <<EOF
SET s hello
HSET h f v
LPUSH l a
SADD set x
ZADD z 1 a
PING
EOF

下一步推荐

  1. Redis 持久化机制
  2. Redis 分布式锁实战
  3. Redis 管道 Pipeline 与事务

需要我生成

  • “秒杀系统完整 Lua 脚本”
  • “高并发排行榜 ZSET 优化方案”
  • “Stream 消费者组生产代码”

回复关键词即可:秒杀 | 排行榜 | Stream

文章已创建 2481

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部