Redis命令集

举报
福州司马懿 发表于 2025/08/30 21:08:22 2025/08/30
【摘要】 在 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 会:

  1. 解析命令名称(如 "SET")。
  2. 在命令表中查找对应的 redisCommand 结构。
  3. 调用 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。