Redis命令集
【摘要】 在 Redis 中,命令集(Command Set) 并不是一个官方术语,但通常可以理解为 Redis 支持的所有命令的集合,或者针对特定场景或功能的一组相关命令的组合。以下是不同层面的解释: 1. 广义的 Redis 命令集Redis 提供了 200+ 个命令,覆盖了数据结构操作、事务、持久化、集群管理、发布订阅等核心功能。这些命令可以按功能分类如下: (1)数据结构操作命令String(...
在 Redis 中,命令集(Command Set) 并不是一个官方术语,但通常可以理解为 Redis 支持的所有命令的集合,或者针对特定场景或功能的一组相关命令的组合。以下是不同层面的解释:
1. 广义的 Redis 命令集
Redis 提供了 200+ 个命令,覆盖了数据结构操作、事务、持久化、集群管理、发布订阅等核心功能。这些命令可以按功能分类如下:
(1)数据结构操作命令
- String(字符串):
SET
,GET
,INCR
,DECR
,MSET
,MGET
- Hash(哈希):
HSET
,HGET
,HGETALL
,HDEL
,HINCRBY
- List(列表):
LPUSH
,RPUSH
,LPOP
,RPOP
,LRANGE
,LLEN
- Set(集合):
SADD
,SMEMBERS
,SINTER
,SUNION
,SISMEMBER
- ZSet(有序集合):
ZADD
,ZRANGE
,ZRANK
,ZSCORE
,ZREM
(2)键管理命令
KEYS
(匹配键模式,生产环境慎用)EXISTS
,DEL
,EXPIRE
,TTL
,RENAME
,TYPE
(3)事务与脚本
MULTI
,EXEC
,DISCARD
(事务)EVAL
,EVALSHA
(Lua 脚本)
(4)持久化与配置
SAVE
,BGSAVE
,LASTSAVE
(RDB 持久化)CONFIG GET
,CONFIG SET
(动态配置)
(5)集群与高可用
CLUSTER NODES
,CLUSTER MEET
(集群管理)SENTINEL masters
,SENTINEL failover
(哨兵模式)
(6)发布订阅
SUBSCRIBE
,PUBLISH
,PSUBSCRIBE
2. 狭义的“命令集”:特定场景的命令组合
在某些上下文中,命令集 可能指针对特定场景的 一组关联命令,例如:
(1)分布式锁命令集
SET lock_key unique_value NX PX 30000 # 原子性获取锁(30秒过期)
EVAL "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end" 1 lock_key unique_value # 释放锁(Lua脚本保证原子性)
(2)限流命令集(基于计数器)
INCR rate_limit.user:123 # 增加计数器
EXPIRE rate_limit.user:123 60 # 设置60秒过期(模拟滑动窗口)
(3)缓存穿透防护命令集
# 1. 先查缓存
GET cache_key
# 2. 若不存在,查数据库并设置空值+短过期时间(防止穿透)
SET cache_key "" EX 60 NX # 空值缓存1分钟
3. 命令集的底层实现:Redis 的命令处理机制
Redis 的命令集在底层由 命令表(Command Table) 支持,这是一个全局哈希表,存储了所有命令的元信息(如名称、实现函数、参数数量、标志位等)。例如:
struct redisCommand {
char *name; // 命令名称(如"SET")
redisCommandProc *proc; // 命令处理函数指针
int arity; // 参数数量(正数=固定参数,负数=最小参数)
char *sflags; // 命令标志(如"wm"表示可写且会修改数据)
// ...其他字段
};
当客户端发送命令时,Redis 会:
- 解析命令名称(如
"SET"
)。 - 在命令表中查找对应的
redisCommand
结构。 - 调用
proc
函数执行命令逻辑。
4. 如何查看 Redis 支持的完整命令集?
(1)通过 COMMAND
命令
COMMAND # 列出所有命令及其详细信息(Redis 2.8+)
COMMAND INFO SET GET # 查看特定命令的元信息
COMMAND COUNT # 获取命令总数
(2)通过 Redis 文档
官方文档提供了按分类列出所有命令及其用法。
(3)通过 INFO
命令(部分信息)
INFO commandstats # 查看命令调用统计(需在配置中启用 `slowlog`)
5. 总结
- 广义命令集:Redis 支持的所有命令的集合,覆盖数据结构、事务、集群等功能。
- 狭义命令集:针对特定场景的命令组合(如分布式锁、限流)。
- 底层实现:通过全局命令表(Command Table)映射命令名称到处理函数。
- 查看方法:
COMMAND
命令、官方文档、INFO
命令。
理解 Redis 命令集的设计有助于高效使用 Redis,尤其是在设计复杂业务逻辑(如分布式锁、缓存策略)时,需要灵活组合命令。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)