Skip to content

Redis 常用命令

键管理命令

键的基本操作

KEYS 命令

  • 语法KEYS pattern
  • 功能:查找所有符合给定模式的键
  • 参数
    • pattern:匹配模式,支持通配符 *(匹配任意多个字符)、?(匹配单个字符)、[](匹配指定范围内的字符)
  • 返回值:符合条件的键列表
  • 示例
    bash
    # 查找所有以 "user:" 开头的键
    redis-cli KEYS user:*
    
    # 查找所有包含 "test" 的键
    redis-cli KEYS *test*

EXISTS 命令

  • 语法EXISTS key [key ...]
  • 功能:检查给定的键是否存在
  • 参数
    • key:要检查的键名,可以指定多个
  • 返回值:存在的键的数量
  • 示例
    bash
    # 检查单个键是否存在
    redis-cli EXISTS user:1
    
    # 检查多个键是否存在
    redis-cli EXISTS user:1 user:2 user:3

DEL 命令

  • 语法DEL key [key ...]
  • 功能:删除给定的一个或多个键
  • 参数
    • key:要删除的键名,可以指定多个
  • 返回值:成功删除的键的数量
  • 示例
    bash
    # 删除单个键
    redis-cli DEL user:1
    
    # 删除多个键
    redis-cli DEL user:1 user:2

TYPE 命令

  • 语法TYPE key
  • 功能:返回键所存储的值的类型
  • 参数
    • key:要检查的键名
  • 返回值:键的类型,可能的取值有:stringhashlistsetzsetstreamnone(键不存在)
  • 示例
    bash
    # 检查键的类型
    redis-cli TYPE user:1

RENAME 命令

  • 语法RENAME key newkey
  • 功能:将键重命名为 newkey
  • 参数
    • key:原键名
    • newkey:新键名
  • 返回值:成功返回 OK,失败返回错误信息
  • 示例
    bash
    # 重命名键
    redis-cli RENAME user:1 user:100

EXPIRE 命令

  • 语法EXPIRE key seconds
  • 功能:为键设置过期时间,单位为秒
  • 参数
    • key:要设置过期时间的键名
    • seconds:过期时间,单位为秒
  • 返回值:设置成功返回 1,键不存在返回 0
  • 示例
    bash
    # 设置键的过期时间为60秒
    redis-cli EXPIRE user:1 60

TTL 命令

  • 语法TTL key
  • 功能:返回键的剩余生存时间(TTL,Time To Live)
  • 参数
    • key:要检查的键名
  • 返回值
    • 大于等于0的整数:键的剩余生存时间,单位为秒
    • -1:键存在但没有设置过期时间
    • -2:键不存在
  • 示例
    bash
    # 检查键的剩余生存时间
    redis-cli TTL user:1

键的高级操作

SCAN 命令

  • 语法SCAN cursor [MATCH pattern] [COUNT count]
  • 功能:迭代数据库中的键空间
  • 参数
    • cursor:游标,第一次调用使用 0,后续调用使用上一次返回的游标值
    • MATCH pattern:可选,匹配模式
    • COUNT count:可选,每次迭代返回的键的数量,默认值为 10
  • 返回值:包含新游标和匹配键列表的数组
  • 示例
    bash
    # 迭代所有键
    redis-cli SCAN 0
    
    # 迭代匹配 "user:*" 模式的键,每次返回20个
    redis-cli SCAN 0 MATCH user:* COUNT 20

OBJECT 命令

  • 语法OBJECT subcommand [arguments [arguments ...]]
  • 功能:获取键的内部对象信息
  • 常用子命令
    • OBJECT ENCODING key:返回键值的内部编码
    • OBJECT IDLETIME key:返回键的空闲时间(自上次访问以来经过的秒数)
    • OBJECT REFCOUNT key:返回键的引用计数
  • 示例
    bash
    # 获取键值的内部编码
    redis-cli OBJECT ENCODING user:1
    
    # 获取键的空闲时间
    redis-cli OBJECT IDLETIME user:1

字符串命令

字符串基本操作

SET 命令

  • 语法SET key value [EX seconds | PX milliseconds | KEEPTTL] [NX | XX] [GET]
  • 功能:设置键的值
  • 参数
    • key:键名
    • value:键值
    • EX seconds:可选,设置过期时间,单位为秒
    • PX milliseconds:可选,设置过期时间,单位为毫秒
    • KEEPTTL:可选,保留键原有的过期时间
    • NX:可选,只在键不存在时设置
    • XX:可选,只在键存在时设置
    • GET:可选,返回键的旧值
  • 返回值
    • 成功返回 OK
    • 使用 GET 选项时返回键的旧值
    • 使用 NXXX 选项但条件不满足时返回 nil
  • 示例
    bash
    # 设置键的值
    redis-cli SET user:1 "John Doe"
    
    # 设置键的值并设置过期时间为60秒
    redis-cli SET user:1 "John Doe" EX 60
    
    # 只在键不存在时设置
    redis-cli SET user:1 "John Doe" NX
    
    # 返回键的旧值并设置新值
    redis-cli SET user:1 "Jane Doe" GET

GET 命令

  • 语法GET key
  • 功能:获取键的值
  • 参数
    • key:键名
  • 返回值:键的值,如果键不存在返回 nil
  • 示例
    bash
    # 获取键的值
    redis-cli GET user:1

GETSET 命令

  • 语法GETSET key value
  • 功能:将键的值设为新值,并返回键的旧值
  • 参数
    • key:键名
    • value:新值
  • 返回值:键的旧值,如果键不存在返回 nil
  • 示例
    bash
    # 设置新值并返回旧值
    redis-cli GETSET user:1 "Jane Doe"

MSET 和 MGET 命令

  • 语法
    • MSET key value [key value ...]
    • MGET key [key ...]
  • 功能
    • MSET:同时设置多个键值对
    • MGET:同时获取多个键的值
  • 参数
    • key value:键值对,可以指定多个
  • 返回值
    • MSET:成功返回 OK
    • MGET:包含所有键值的列表
  • 示例
    bash
    # 同时设置多个键值对
    redis-cli MSET user:1 "John" user:2 "Jane" user:3 "Bob"
    
    # 同时获取多个键的值
    redis-cli MGET user:1 user:2 user:3

字符串数值操作

INCR 和 DECR 命令

  • 语法
    • INCR key
    • DECR key
  • 功能
    • INCR:将键的值加1
    • DECR:将键的值减1
  • 参数
    • key:键名
  • 返回值:执行操作后的键值
  • 示例
    bash
    # 将键的值加1
    redis-cli INCR counter
    
    # 将键的值减1
    redis-cli DECR counter

INCRBY 和 DECRBY 命令

  • 语法
    • INCRBY key increment
    • DECRBY key decrement
  • 功能
    • INCRBY:将键的值加上指定的增量
    • DECRBY:将键的值减去指定的减量
  • 参数
    • key:键名
    • increment/decrement:要增加或减少的数值
  • 返回值:执行操作后的键值
  • 示例
    bash
    # 将键的值加10
    redis-cli INCRBY counter 10
    
    # 将键的值减5
    redis-cli DECRBY counter 5

INCRBYFLOAT 命令

  • 语法INCRBYFLOAT key increment
  • 功能:将键的值加上指定的浮点数增量
  • 参数
    • key:键名
    • increment:要增加的浮点数
  • 返回值:执行操作后的键值
  • 示例
    bash
    # 将键的值加2.5
    redis-cli INCRBYFLOAT price 2.5

字符串其他操作

APPEND 命令

  • 语法APPEND key value
  • 功能:将指定的值追加到键值的末尾
  • 参数
    • key:键名
    • value:要追加的字符串
  • 返回值:追加后字符串的总长度
  • 示例
    bash
    # 追加字符串到键值末尾
    redis-cli APPEND user:1 " - Developer"

STRLEN 命令

  • 语法STRLEN key
  • 功能:返回键值的长度
  • 参数
    • key:键名
  • 返回值:键值的长度,如果键不存在返回 0
  • 示例
    bash
    # 获取键值的长度
    redis-cli STRLEN user:1

SUBSTR 命令

  • 语法SUBSTR key start end
  • 功能:返回键值的子字符串
  • 参数
    • key:键名
    • start:起始索引,包含该位置
    • end:结束索引,包含该位置
  • 返回值:子字符串
  • 示例
    bash
    # 获取键值的前5个字符
    redis-cli SUBSTR user:1 0 4
    
    # 获取键值的最后3个字符
    redis-cli SUBSTR user:1 -3 -1

哈希命令

哈希基本操作

HSET 命令

  • 语法HSET key field value [field value ...]
  • 功能:设置哈希表中一个或多个字段的值
  • 参数
    • key:哈希表的键名
    • field:字段名
    • value:字段值
  • 返回值:成功设置的字段数量
  • 示例
    bash
    # 设置哈希表中的一个字段
    redis-cli HSET user:1 name "John Doe"
    
    # 设置哈希表中的多个字段
    redis-cli HSET user:1 name "John Doe" age 30 email "john@example.com"

HGET 命令

  • 语法HGET key field
  • 功能:获取哈希表中指定字段的值
  • 参数
    • key:哈希表的键名
    • field:字段名
  • 返回值:字段的值,如果字段或哈希表不存在返回 nil
  • 示例
    bash
    # 获取哈希表中指定字段的值
    redis-cli HGET user:1 name

HMSET 和 HMGET 命令

  • 语法
    • HMSET key field value [field value ...]
    • HMGET key field [field ...]
  • 功能
    • HMSET:同时设置哈希表中多个字段的值(Redis 4.0.0+ 已废弃,建议使用 HSET
    • HMGET:同时获取哈希表中多个字段的值
  • 参数
    • key:哈希表的键名
    • field:字段名
    • value:字段值
  • 返回值
    • HMSET:成功返回 OK
    • HMGET:包含所有字段值的列表
  • 示例
    bash
    # 同时获取哈希表中多个字段的值
    redis-cli HMGET user:1 name age email

HGETALL 命令

  • 语法HGETALL key
  • 功能:获取哈希表中所有字段和值
  • 参数
    • key:哈希表的键名
  • 返回值:包含所有字段和值的列表,字段和值交替出现
  • 示例
    bash
    # 获取哈希表中所有字段和值
    redis-cli HGETALL user:1

哈希字段操作

HEXISTS 命令

  • 语法HEXISTS key field
  • 功能:检查哈希表中指定字段是否存在
  • 参数
    • key:哈希表的键名
    • field:字段名
  • 返回值:存在返回 1,不存在返回 0
  • 示例
    bash
    # 检查哈希表中指定字段是否存在
    redis-cli HEXISTS user:1 name

HDEL 命令

  • 语法HDEL key field [field ...]
  • 功能:删除哈希表中指定的一个或多个字段
  • 参数
    • key:哈希表的键名
    • field:要删除的字段名,可以指定多个
  • 返回值:成功删除的字段数量
  • 示例
    bash
    # 删除哈希表中的一个字段
    redis-cli HDEL user:1 age
    
    # 删除哈希表中的多个字段
    redis-cli HDEL user:1 age email

HLEN 命令

  • 语法HLEN key
  • 功能:返回哈希表中字段的数量
  • 参数
    • key:哈希表的键名
  • 返回值:字段数量,如果哈希表不存在返回 0
  • 示例
    bash
    # 获取哈希表中字段的数量
    redis-cli HLEN user:1

HKEYS 和 HVALS 命令

  • 语法
    • HKEYS key
    • HVALS key
  • 功能
    • HKEYS:返回哈希表中所有字段名
    • HVALS:返回哈希表中所有字段值
  • 参数
    • key:哈希表的键名
  • 返回值
    • HKEYS:字段名列表
    • HVALS:字段值列表
  • 示例
    bash
    # 获取哈希表中所有字段名
    redis-cli HKEYS user:1
    
    # 获取哈希表中所有字段值
    redis-cli HVALS user:1

哈希数值操作

HINCRBY 命令

  • 语法HINCRBY key field increment
  • 功能:将哈希表中指定字段的值加上指定的增量
  • 参数
    • key:哈希表的键名
    • field:字段名
    • increment:要增加的数值
  • 返回值:执行操作后的字段值
  • 示例
    bash
    # 将哈希表中指定字段的值加1
    redis-cli HINCRBY user:1 age 1
    
    # 将哈希表中指定字段的值加5
    redis-cli HINCRBY product:1 stock 5

HINCRBYFLOAT 命令

  • 语法HINCRBYFLOAT key field increment
  • 功能:将哈希表中指定字段的值加上指定的浮点数增量
  • 参数
    • key:哈希表的键名
    • field:字段名
    • increment:要增加的浮点数
  • 返回值:执行操作后的字段值
  • 示例
    bash
    # 将哈希表中指定字段的值加2.5
    redis-cli HINCRBYFLOAT product:1 price 2.5

列表命令

列表基本操作

LPUSH 和 RPUSH 命令

  • 语法
    • LPUSH key value [value ...]
    • RPUSH key value [value ...]
  • 功能
    • LPUSH:将一个或多个值插入到列表的头部
    • RPUSH:将一个或多个值插入到列表的尾部
  • 参数
    • key:列表的键名
    • value:要插入的值,可以指定多个
  • 返回值:执行操作后列表的长度
  • 示例
    bash
    # 在列表头部插入一个值
    redis-cli LPUSH users "John"
    
    # 在列表尾部插入多个值
    redis-cli RPUSH users "Jane" "Bob" "Alice"

LPOP 和 RPOP 命令

  • 语法
    • LPOP key [count]
    • RPOP key [count]
  • 功能
    • LPOP:移除并返回列表的头元素
    • RPOP:移除并返回列表的尾元素
  • 参数
    • key:列表的键名
    • count:可选,要弹出的元素数量,默认值为 1
  • 返回值
    • count 未指定时,返回被弹出的元素
    • count 指定时,返回被弹出的元素列表
  • 示例
    bash
    # 移除并返回列表的头元素
    redis-cli LPOP users
    
    # 移除并返回列表的尾元素
    redis-cli RPOP users
    
    # 移除并返回列表的前2个元素
    redis-cli LPOP users 2

LLEN 命令

  • 语法LLEN key
  • 功能:返回列表的长度
  • 参数
    • key:列表的键名
  • 返回值:列表的长度,如果列表不存在返回 0
  • 示例
    bash
    # 获取列表的长度
    redis-cli LLEN users

LRANGE 命令

  • 语法LRANGE key start stop
  • 功能:返回列表中指定区间内的元素
  • 参数
    • key:列表的键名
    • start:起始索引,包含该位置
    • stop:结束索引,包含该位置,使用 -1 表示最后一个元素
  • 返回值:指定区间内的元素列表
  • 示例
    bash
    # 获取列表的前3个元素
    redis-cli LRANGE users 0 2
    
    # 获取列表的所有元素
    redis-cli LRANGE users 0 -1
    
    # 获取列表的最后2个元素
    redis-cli LRANGE users -2 -1

列表元素操作

LINDEX 命令

  • 语法LINDEX key index
  • 功能:返回列表中指定索引位置的元素
  • 参数
    • key:列表的键名
    • index:索引位置,从0开始,负数表示从尾部开始计数
  • 返回值:指定位置的元素,如果索引超出范围返回 nil
  • 示例
    bash
    # 获取列表中索引为0的元素
    redis-cli LINDEX users 0
    
    # 获取列表中倒数第1个元素
    redis-cli LINDEX users -1

LSET 命令

  • 语法LSET key index value
  • 功能:设置列表中指定索引位置的元素值
  • 参数
    • key:列表的键名
    • index:索引位置
    • value:新值
  • 返回值:成功返回 OK,失败返回错误信息
  • 示例
    bash
    # 设置列表中索引为0的元素值
    redis-cli LSET users 0 "Johnny"

LREM 命令

  • 语法LREM key count value
  • 功能:移除列表中与指定值相等的元素
  • 参数
    • key:列表的键名
    • count
      • 正数:从列表头部开始向尾部搜索,移除前 count 个匹配的元素
      • 负数:从列表尾部开始向头部搜索,移除前 abs(count) 个匹配的元素
      • 0:移除所有匹配的元素
    • value:要移除的元素值
  • 返回值:成功移除的元素数量
  • 示例
    bash
    # 移除列表中所有值为 "John" 的元素
    redis-cli LREM users 0 "John"
    
    # 从列表头部开始移除前2个值为 "Jane" 的元素
    redis-cli LREM users 2 "Jane"

LTRIM 命令

  • 语法LTRIM key start stop
  • 功能:对列表进行修剪,只保留指定区间内的元素
  • 参数
    • key:列表的键名
    • start:起始索引
    • stop:结束索引
  • 返回值:成功返回 OK
  • 示例
    bash
    # 只保留列表的前3个元素
    redis-cli LTRIM users 0 2
    
    # 只保留列表的最后2个元素
    redis-cli LTRIM users -2 -1

集合命令

集合基本操作

SADD 命令

  • 语法SADD key member [member ...]
  • 功能:向集合中添加一个或多个成员
  • 参数
    • key:集合的键名
    • member:要添加的成员
  • 返回值:成功添加的成员数量
  • 示例
    bash
    # 向集合中添加一个成员
    redis-cli SADD users "John"
    
    # 向集合中添加多个成员
    redis-cli SADD users "Jane" "Bob" "Alice"

SMEMBERS 命令

  • 语法SMEMBERS key
  • 功能:返回集合中的所有成员
  • 参数
    • key:集合的键名
  • 返回值:集合中的所有成员列表
  • 示例
    bash
    # 获取集合中的所有成员
    redis-cli SMEMBERS users

SISMEMBER 命令

  • 语法SISMEMBER key member
  • 功能:检查成员是否存在于集合中
  • 参数
    • key:集合的键名
    • member:要检查的成员
  • 返回值:存在返回 1,不存在返回 0
  • 示例
    bash
    # 检查成员 "John" 是否存在于集合中
    redis-cli SISMEMBER users "John"

SCARD 命令

  • 语法SCARD key
  • 功能:返回集合的成员数量
  • 参数
    • key:集合的键名
  • 返回值:集合的成员数量,如果集合不存在返回 0
  • 示例
    bash
    # 获取集合的成员数量
    redis-cli SCARD users

集合成员操作

SREM 命令

  • 语法SREM key member [member ...]
  • 功能:从集合中移除一个或多个成员
  • 参数
    • key:集合的键名
    • member:要移除的成员
  • 返回值:成功移除的成员数量
  • 示例
    bash
    # 从集合中移除一个成员
    redis-cli SREM users "John"
    
    # 从集合中移除多个成员
    redis-cli SREM users "Jane" "Bob"

SPOP 命令

  • 语法SPOP key [count]
  • 功能:移除并返回集合中的一个或多个随机成员
  • 参数
    • key:集合的键名
    • count:可选,要弹出的成员数量,默认值为 1
  • 返回值
    • count 未指定时,返回被弹出的成员
    • count 指定时,返回被弹出的成员列表
  • 示例
    bash
    # 移除并返回集合中的一个随机成员
    redis-cli SPOP users
    
    # 移除并返回集合中的3个随机成员
    redis-cli SPOP users 3

SRANDMEMBER 命令

  • 语法SRANDMEMBER key [count]
  • 功能:返回集合中的一个或多个随机成员,但不移除
  • 参数
    • key:集合的键名
    • count:可选,要返回的成员数量
  • 返回值
    • count 未指定时,返回一个随机成员
    • count 为正数时,返回包含 count 个随机成员的列表,成员可能重复
    • count 为负数时,返回包含 abs(count) 个随机成员的列表,成员不重复
  • 示例
    bash
    # 返回集合中的一个随机成员
    redis-cli SRANDMEMBER users
    
    # 返回集合中的3个随机成员,可能重复
    redis-cli SRANDMEMBER users 3
    
    # 返回集合中的2个不重复的随机成员
    redis-cli SRANDMEMBER users -2

集合运算命令

SINTER 命令

  • 语法SINTER key [key ...]
  • 功能:返回所有给定集合的交集
  • 参数
    • key:集合的键名,可以指定多个
  • 返回值:交集成员列表
  • 示例
    bash
    # 返回两个集合的交集
    redis-cli SINTER users:online users:vip

SUNION 命令

  • 语法SUNION key [key ...]
  • 功能:返回所有给定集合的并集
  • 参数
    • key:集合的键名,可以指定多个
  • 返回值:并集成员列表
  • 示例
    bash
    # 返回两个集合的并集
    redis-cli SUNION users:online users:offline

SDIFF 命令

  • 语法SDIFF key [key ...]
  • 功能:返回第一个集合与其他集合的差集
  • 参数
    • key:集合的键名,可以指定多个
  • 返回值:差集成员列表
  • 示例
    bash
    # 返回集合A与集合B的差集
    redis-cli SDIFF users:all users:vip

有序集合命令

有序集合基本操作

ZADD 命令

  • 语法ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
  • 功能:向有序集合中添加一个或多个成员,或者更新已存在成员的分数
  • 参数
    • key:有序集合的键名
    • NX:可选,只在成员不存在时添加
    • XX:可选,只在成员存在时更新分数
    • CH:可选,返回修改的成员数量(添加、更新分数)
    • INCR:可选,将成员的分数加上指定的增量
    • score:成员的分数,可以是整数或浮点数
    • member:成员名
  • 返回值
    • CH 未指定时,返回成功添加的成员数量
    • CH 指定时,返回修改的成员数量
  • 示例
    bash
    # 向有序集合中添加一个成员
    redis-cli ZADD leaderboard 100 "John"
    
    # 向有序集合中添加多个成员
    redis-cli ZADD leaderboard 90 "Jane" 80 "Bob" 70 "Alice"
    
    # 增加成员的分数
    redis-cli ZADD leaderboard INCR 10 "John"

ZRANGE 命令

  • 语法ZRANGE key start stop [WITHSCORES]
  • 功能:返回有序集合中指定区间内的成员,按分数从小到大排序
  • 参数
    • key:有序集合的键名
    • start:起始索引,包含该位置
    • stop:结束索引,包含该位置,使用 -1 表示最后一个元素
    • WITHSCORES:可选,同时返回成员的分数
  • 返回值
    • WITHSCORES 未指定时,返回成员列表
    • WITHSCORES 指定时,返回成员和分数交替出现的列表
  • 示例
    bash
    # 返回有序集合中排名前3的成员
    redis-cli ZRANGE leaderboard 0 2
    
    # 返回有序集合中所有成员及其分数
    redis-cli ZRANGE leaderboard 0 -1 WITHSCORES

ZREVRANGE 命令

  • 语法ZREVRANGE key start stop [WITHSCORES]
  • 功能:返回有序集合中指定区间内的成员,按分数从大到小排序
  • 参数:与 ZRANGE 命令相同
  • 返回值:与 ZRANGE 命令相同
  • 示例
    bash
    # 返回有序集合中分数最高的3个成员
    redis-cli ZREVRANGE leaderboard 0 2

ZCARD 命令

  • 语法ZCARD key
  • 功能:返回有序集合的成员数量
  • 参数
    • key:有序集合的键名
  • 返回值:成员数量,如果有序集合不存在返回 0
  • 示例
    bash
    # 获取有序集合的成员数量
    redis-cli ZCARD leaderboard

有序集合分数操作

ZSCORE 命令

  • 语法ZSCORE key member
  • 功能:返回有序集合中指定成员的分数
  • 参数
    • key:有序集合的键名
    • member:成员名
  • 返回值:成员的分数,如果成员不存在返回 nil
  • 示例
    bash
    # 获取有序集合中指定成员的分数
    redis-cli ZSCORE leaderboard "John"

ZINCRBY 命令

  • 语法ZINCRBY key increment member
  • 功能:将有序集合中指定成员的分数加上指定的增量
  • 参数
    • key:有序集合的键名
    • increment:要增加的数值,可以是正数或负数
    • member:成员名
  • 返回值:执行操作后的成员分数
  • 示例
    bash
    # 将有序集合中指定成员的分数加10
    redis-cli ZINCRBY leaderboard 10 "John"
    
    # 将有序集合中指定成员的分数减5
    redis-cli ZINCRBY leaderboard -5 "Jane"

ZCOUNT 命令

  • 语法ZCOUNT key min max
  • 功能:返回有序集合中分数在指定范围内的成员数量
  • 参数
    • key:有序集合的键名
    • min:分数下限
    • max:分数上限
  • 返回值:指定分数范围内的成员数量
  • 示例
    bash
    # 返回分数在80到100之间的成员数量
    redis-cli ZCOUNT leaderboard 80 100
    
    # 返回分数大于80的成员数量
    redis-cli ZCOUNT leaderboard (80 +inf

有序集合排名操作

ZRANK 命令

  • 语法ZRANK key member
  • 功能:返回有序集合中指定成员的排名,按分数从小到大排序,排名从0开始
  • 参数
    • key:有序集合的键名
    • member:成员名
  • 返回值:成员的排名,如果成员不存在返回 nil
  • 示例
    bash
    # 获取有序集合中指定成员的排名(从小到大)
    redis-cli ZRANK leaderboard "John"

ZREVRANK 命令

  • 语法ZREVRANK key member
  • 功能:返回有序集合中指定成员的排名,按分数从大到小排序,排名从0开始
  • 参数:与 ZRANK 命令相同
  • 返回值:与 ZRANK 命令相同
  • 示例
    bash
    # 获取有序集合中指定成员的排名(从大到小)
    redis-cli ZREVRANK leaderboard "John"

ZRANGEBYSCORE 命令

  • 语法ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  • 功能:返回有序集合中分数在指定范围内的成员,按分数从小到大排序
  • 参数
    • key:有序集合的键名
    • min:分数下限
    • max:分数上限
    • WITHSCORES:可选,同时返回成员的分数
    • LIMIT offset count:可选,分页参数
  • 返回值:与 ZRANGE 命令相同
  • 示例
    bash
    # 返回分数在80到100之间的成员
    redis-cli ZRANGEBYSCORE leaderboard 80 100
    
    # 返回分数大于80的前3个成员及其分数
    redis-cli ZRANGEBYSCORE leaderboard (80 +inf WITHSCORES LIMIT 0 3

ZREMRANGEBYRANK 命令

  • 语法ZREMRANGEBYRANK key start stop
  • 功能:移除有序集合中指定排名范围内的成员
  • 参数
    • key:有序集合的键名
    • start:起始排名
    • stop:结束排名
  • 返回值:成功移除的成员数量
  • 示例
    bash
    # 移除有序集合中排名前2的成员
    redis-cli ZREMRANGEBYRANK leaderboard 0 1
    
    # 移除有序集合中排名最后的3个成员
    redis-cli ZREMRANGEBYRANK leaderboard -3 -1

ZREMRANGEBYSCORE 命令

  • 语法ZREMRANGEBYSCORE key min max
  • 功能:移除有序集合中分数在指定范围内的成员
  • 参数
    • key:有序集合的键名
    • min:分数下限
    • max:分数上限
  • 返回值:成功移除的成员数量
  • 示例
    bash
    # 移除有序集合中分数小于80的成员
    redis-cli ZREMRANGEBYSCORE leaderboard -inf (80

常见问题(FAQ)

Q1: Redis 命令中的通配符有哪些?

A1: Redis 命令支持以下通配符:

  • *:匹配任意多个字符(包括0个)
  • ?:匹配单个字符
  • []:匹配指定范围内的字符,例如 [abc] 匹配 abc
  • [^]:匹配指定范围外的字符,例如 [^abc] 匹配除 abc 之外的任意字符

Q2: 如何获取 Redis 中所有键的数量?

A2: 可以使用 DBSIZE 命令获取当前数据库中键的数量:

bash
redis-cli DBSIZE

Q3: 如何清空 Redis 数据库?

A3: 可以使用 FLUSHDB 命令清空当前数据库:

bash
redis-cli FLUSHDB

或使用 FLUSHALL 命令清空所有数据库:

bash
redis-cli FLUSHALL

Q4: 如何查看 Redis 服务器信息?

A4: 可以使用 INFO 命令查看 Redis 服务器的详细信息:

bash
# 查看所有信息
redis-cli INFO

# 查看特定部分的信息,例如内存信息
redis-cli INFO memory

# 查看CPU信息
redis-cli INFO cpu

Q5: 如何设置 Redis 键的过期时间?

A5: 可以使用以下命令设置 Redis 键的过期时间:

  • EXPIRE key seconds:设置键的过期时间为指定的秒数
  • PEXPIRE key milliseconds:设置键的过期时间为指定的毫秒数
  • EXPIREAT key timestamp:设置键的过期时间为指定的UNIX时间戳(秒)
  • PEXPIREAT key milliseconds-timestamp:设置键的过期时间为指定的UNIX时间戳(毫秒)

Q6: 如何取消 Redis 键的过期时间?

A6: 可以使用 PERSIST 命令取消键的过期时间,使键永久存在:

bash
redis-cli PERSIST key

Q7: 如何查看 Redis 中所有数据类型的命令?

A7: 可以使用 HELP 命令查看 Redis 命令的分类和详细信息:

bash
# 查看所有命令分类
redis-cli HELP

# 查看特定数据类型的命令,例如字符串命令
redis-cli HELP @string

# 查看哈希命令
redis-cli HELP @hash

Q8: 如何在 Redis 中执行事务?

A8: 可以使用 MULTIEXECDISCARD 命令执行事务:

bash
# 开始事务
redis-cli MULTI

# 执行多个命令
redis-cli SET key1 value1
redis-cli SET key2 value2
redis-cli GET key1

# 提交事务
redis-cli EXEC

Q9: 如何在 Redis 中执行 Lua 脚本?

A9: 可以使用 EVAL 命令执行 Lua 脚本:

bash
# 执行简单的 Lua 脚本
redis-cli EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 test-key test-value

Q10: 如何监控 Redis 命令执行?

A10: 可以使用 MONITOR 命令监控 Redis 服务器执行的所有命令:

bash
redis-cli MONITOR