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)