当前位置: 首页 > news >正文

Redis面试——常用命令

一、String

(1)设置值相关命令

1.1.1 SET

  1. 功能:设置一个键值对,如果键已存在则覆盖旧值
  2. 语法
    SET key value [EX seconds] [PX milliseconds] [NX|XX]EX seconds:设置键的过期时间为 seconds 秒
    PX milliseconds:设置键的过期时间为 milliseconds 毫秒
    NX:仅当键不存在时设置
    XX:仅当键已存在时设置
  3. 示例
    127.0.0.1:6379> SET mykey "Hello"
    OK
  4. 输出解释:OK 表示设置成功

1.1.2 SETNX

  1. 功能:仅当键不存在时设置键值对
  2. 语法
    SETNX key value
  3. 示例
    127.0.0.1:6379> SETNX mykey "World"
    (integer) 0
  4. 输出解释:因为 mykey 已经存在,所以返回 0 表示设置失败

1.1.3 SETEX

  1. 功能:设置键值对并同时设置过期时间(以秒为单位)
  2. 语法
    SETEX key seconds value
  3. 示例
    127.0.0.1:6379> SETEX mykey2 60 "Temporary Value"
    OK
  4. 输出解释:OK 表示设置成功,mykey2 将在 60 秒后过期

1.1.4 PSETEX

  1. 功能:设置键值对并同时设置过期时间(以毫秒为单位)
  2. 语法
    PSETEX key milliseconds value
  3. 示例
    127.0.0.1:6379> PSETEX mykey3 10000 "Short - lived Value"
    OK
  4. 输出解释:OK 表示设置成功,mykey3 将在 10000 毫秒(即 10 秒)后过期

1.1.5 MSET

  1. 功能:同时设置多个键值对
  2. 语法
    MSET key1 value1 [key2 value2 ...]
  3. 示例
    127.0.0.1:6379> MSET key1 "value1" key2 "value2"
    OK
  4. 输出解释:OK 表示所有键值对都设置成功

1.1.6 MSETNX

  1. 功能:仅当所有给定键都不存在时,同时设置多个键值对。如果有一个键已存在,则所有键都不会被设置
  2. 语法
    MSETNX key1 value1 [key2 value2 ...]
  3. 示例
    127.0.0.1:6379> MSETNX key3 "value3" key4 "value4"
    (integer) 1
  4. 输出解释:返回 1 表示所有键都不存在,设置成功

(2)获取值相关命令

1.2.1 GET

  1. 功能:获取指定键的值。如果键不存在,返回 (nil)
  2. 语法
    GET key
  3. 示例
    127.0.0.1:6379> GET mykey
    "Hello"
  4. 输出解释:返回键 mykey 对应的值 "Hello"

1.2.2 MGET

  1. 功能:同时获取多个键的值。如果某个键不存在,对应位置返回 (nil)
  2. 语法
    MGET key1 [key2 ...]
  3. 示例
    127.0.0.1:6379> MGET key1 key2 key3
    1) "value1"
    2) "value2"
    3) "value3"
  4. 输出解释:依次返回 key1、key2、key3 的值

(3)数值操作相关命令

1.3.1 INCR

  1. 功能:将键的值递增 1。如果键不存在,则先将其值初始化为 0 再进行递增。键的值必须是整数
  2. 语法
    INCR key
  3. 示例
    127.0.0.1:6379> SET counter 10
    OK
    127.0.0.1:6379> INCR counter
    (integer) 11
  4. 输出解释:counter 的值从 10 递增到 11

1.3.2 DECR

  1. 功能:将键的值递减 1。如果键不存在,则先将其值初始化为 0 再进行递减。键的值必须是整数
  2. 语法
    DECR key
  3. 示例
    127.0.0.1:6379> DECR counter
    (integer) 10
  4. 输出解释:counter 的值从 11 递减到 10

1.3.3 INCRBY

  1. 功能:将键的值增加指定的整数。如果键不存在,则先将其值初始化为 0 再进行增加
  2. 语法
    INCRBY key increment
  3. 示例
    127.0.0.1:6379> INCRBY counter 5
    (integer) 15
  4. 输出解释:counter 的值增加 5 后变为 15

1.3.4 DECRBY

  1. 功能:将键的值减少指定的整数。如果键不存在,则先将其值初始化为 0 再进行减少
  2. 语法
    DECRBY key decrement
  3. 示例
    127.0.0.1:6379> DECRBY counter 3
    (integer) 12
  4. 输出解释:counter 的值减少 3 后变为 12

1.3.5 INCRBYFLOAT

  1. 功能:将键的值增加指定的浮点数。如果键不存在,则先将其值初始化为 0 再进行增加
  2. 语法
    INCRBYFLOAT key increment
  3. 示例
    127.0.0.1:6379> SET float_counter 2.5
    OK
    127.0.0.1:6379> INCRBYFLOAT float_counter 1.5
    "4"
  4. 输出解释:float_counter 的值从 2.5 增加 1.5 后变为 4

(4)字符串操作相关命令

1.4.1 APPEND

  1. 功能:如果键已经存在,将指定的值追加到键的现有值的末尾;如果键不存在,则等同于 SET 命令
  2. 语法
    APPEND key value
  3. 示例
    127.0.0.1:6379> SET message "Hello"
    OK
    127.0.0.1:6379> APPEND message " World"
    (integer) 11
  4. 输出解释:返回追加后字符串的长度,此时 message 的值为 "Hello World"

1.4.2 STRLEN

  1. 功能:返回键对应值的字符串长度。如果键不存在,返回 0
  2. 语法
    STRLEN key
  3. 示例
    127.0.0.1:6379> STRLEN message
    (integer) 11
  4. 输出解释:message 的值 "Hello World" 长度为 11

1.4.3 GETRANGE

  1. 功能:返回键对应值的子字符串,通过指定起始和结束索引。索引从 0 开始,负数表示从字符串末尾开始计数
  2. 语法
    GETRANGE key start end
  3. 示例
    127.0.0.1:6379> GETRANGE message 0 4
    "Hello"
  4. 输出解释:返回 message 从索引 0 到 4 的子字符串 "Hello"

1.4.4 SETRANGE

  1. 功能:从指定的偏移量开始,用指定的值覆盖键对应值的一部分。如果偏移量超过了原字符串的长度,中间会用 0 字节填充
  2. 语法
    SETRANGE key offset value
  3. 示例
    127.0.0.1:6379> SETRANGE message 6 "Redis"
    (integer) 11
    127.0.0.1:6379> GET message
    "Hello Redis"
  4. 输出解释:返回修改后字符串的长度,message 的值被修改为 "Hello Redis"

二、List

(1)插入元素命令

2.1.1 LPUSH

  1. 功能:将一个或多个值插入到列表的头部(左侧)。若列表不存在,会先创建一个空列表再插入
  2. 语法
    LPUSH key value [value ...]
  3. 示例
    127.0.0.1:6379> LPUSH mylist "apple"
    (integer) 1
    127.0.0.1:6379> LPUSH mylist "banana" "cherry"
    (integer) 3
  4. 输出解释:第一次插入后列表长度为 1,第二次插入两个值后列表长度变为 3。当前列表 mylist 元素顺序为 ["cherry", "banana", "apple"]

2.1.2 RPUSH

  1. 功能:将一个或多个值插入到列表的尾部(右侧)。若列表不存在,会先创建空列表再插入
  2. 语法
    RPUSH key value [value ...]
  3. 示例
    127.0.0.1:6379> RPUSH mylist "date"
    (integer) 4
  4. 输出解释:插入后列表长度变为 4,此时列表 mylist 元素顺序为 ["cherry", "banana", "apple", "date"]

2.1.3 LPUSHX

  1. 功能:仅当列表存在时,将一个值插入到列表的头部
  2. 语法
    LPUSHX key value
  3. 示例
    127.0.0.1:6379> LPUSHX mylist "elderberry"
    (integer) 5
  4. 输出解释:由于 mylist 存在,插入成功,列表长度变为 5,元素顺序为 ["elderberry", "cherry", "banana", "apple", "date"]

2.1.4 RPUSHX

  1. 功能:仅当列表存在时,将一个值插入到列表的尾部
  2. 语法
    RPUSHX key value
  3. 示例
    127.0.0.1:6379> RPUSHX mylist "fig"
    (integer) 6
  4. 输出解释:因为 mylist 存在,插入成功,列表长度变为 6,元素顺序为 ["elderberry", "cherry", "banana", "apple", "date", "fig"]

(2)移除元素命令

2.2.1 LPOP

  1. 功能:移除并返回列表的第一个元素(头部元素)。若列表为空,返回 (nil)
  2. 语法
    LPOP key
  3. 示例
    127.0.0.1:6379> LPOP mylist
    "elderberry"
  4. 输出解释:移除并返回了列表 mylist 的头部元素 "elderberry",此时列表元素顺序为 ["cherry", "banana", "apple", "date", "fig"]

2.2.2 RPOP

  1. 功能:移除并返回列表的最后一个元素(尾部元素)。若列表为空,返回 (nil)
  2. 语法
    RPOP key
  3. 示例
    127.0.0.1:6379> RPOP mylist
    "fig"
  4. 输出解释:移除并返回了列表 mylist 的尾部元素 "fig",此时列表元素顺序为 ["cherry", "banana", "apple", "date"]

(3)获取元素命令

2.3.1 LRANGE

  1. 功能:返回列表中指定范围的元素。索引从 0 开始,负数表示从列表末尾开始计数,如 -1 表示最后一个元素
  2. 语法
    LRANGE key start stop
  3. 示例
    127.0.0.1:6379> LRANGE mylist 0 -1
    1) "cherry"
    2) "banana"
    3) "apple"
    4) "date"
  4. 输出解释:返回了列表 mylist 中从索引 0 到最后一个元素的所有元素

2.3.2 LINDEX

  1. 功能:返回列表中指定索引位置的元素。若索引超出列表范围,返回 (nil)
  2. 语法
    LINDEX key index
  3. 示例
    127.0.0.1:6379> LINDEX mylist 2
    "apple"
  4. 输出解释:返回了列表 mylist 中索引为 2 的元素 "apple"

(4)列表长度命令

2.4.1 LLEN

  1. 功能:返回列表的长度。若列表不存在,返回 0
  2. 语法
    LLEN key
  3. 示例
    127.0.0.1:6379> LLEN mylist
    (integer) 4
  4. 输出解释:列表 mylist 的长度为 4

(5)列表修剪命令

2.5.1 LTRIM

  1. 功能:对列表进行修剪,只保留指定范围内的元素,其他元素会被删除
  2. 语法
    LTRIM key start stop
  3. 示例
    127.0.0.1:6379> LTRIM mylist 1 2
    OK
    127.0.0.1:6379> LRANGE mylist 0 -1
    1) "banana"
    2) "apple"
  4. 输出解释:保留了列表 mylist 中索引 1 到 2 的元素,删除了其他元素。修剪后列表元素顺序为 ["banana", "apple"]

(6)阻塞式弹出命令

2.6.1 BLPOP

  1. 功能:阻塞式地从一个或多个列表的头部弹出元素。若所有列表都为空,客户端会被阻塞,直到有元素被插入到任何一个列表中或者达到指定的超时时间
  2. 语法
    BLPOP key [key ...] timeout
  3. 示例:假设当前有两个列表 list1 为空,list2 有元素 ["item1"]
    127.0.0.1:6379> BLPOP list1 list2 10
    1) "list2"
    2) "item1"
  4. 输出解释:客户端从 list2 中弹出了头部元素 "item1",因为 list1 为空,list2 有元素。若两个列表都为空,客户端会阻塞最多 10 秒

2.6.2 BRPOP

  1. 功能:阻塞式地从一个或多个列表的尾部弹出元素。若所有列表都为空,客户端会被阻塞,直到有元素被插入到任何一个列表中或者达到指定的超时时间
  2. 语法
    BRPOP key [key ...] timeout
  3. 示例:与 BLPOP 类似,只是从尾部弹出元素

(7)列表元素移动命令

2.7.1 RPOPLPUSH

  1. 功能:移除列表的最后一个元素,并将其插入到另一个列表的头部
  2. 语法
    RPOPLPUSH source destination
  3. 示例
    127.0.0.1:6379> RPOPLPUSH mylist anotherlist
    "apple"
  4. 输出解释:将列表 mylist 的尾部元素 "apple" 移除,并插入到列表 anotherlist 的头部

2.7.2 BRPOPLPUSH

  1. 功能:阻塞式地从一个列表的尾部弹出元素,并将其插入到另一个列表的头部。若源列表为空,客户端会被阻塞,直到有元素被插入到源列表中或者达到指定的超时时间
  2. 语法
    BRPOPLPUSH source destination timeout
  3. 示例:与 RPOPLPUSH 类似,但具有阻塞功能

三、Hash

(1)设置哈希字段

3.1.1 HSET

  1. 功能:为哈希表中的一个或多个字段设置值。如果哈希表不存在,会创建一个新的哈希表;如果字段已存在,会覆盖旧值
  2. 语法
    HSET key field value [field value ...]
  3. 示例
    127.0.0.1:6379> HSET user:1 name "Alice" age 25
    (integer) 2
  4. 输出解释

3.1.2 HSETNX

  1. 功能:仅当字段不存在时,为哈希表中的字段设置值
  2. 语法
    HSETNX key field value
  3. 示例
    127.0.0.1:6379> HSETNX user:1 email "alice@example.com"
    (integer) 1
    127.0.0.1:6379> HSETNX user:1 name "Bob"
    (integer) 0
  4. 输出解释:第一次执行 HSETNX 时,email 字段不存在,设置成功,返回 1;第二次执行时,name 字段已存在,设置失败,返回 0

(2)获取哈希字段的值

3.2.1 HGET

  1. 功能:获取哈希表中指定字段的值。如果字段不存在,返回 (nil)
  2. 语法
    HGET key field
  3. 示例
    127.0.0.1:6379> HGET user:1 name
    "Alice"
  4. 输出解释:返回哈希表 user:1 中 name 字段的值 "Alice"

3.2.2 HMGET

  1. 功能:获取哈希表中一个或多个字段的值。如果某个字段不存在,对应位置返回 (nil)
  2. 语法
    HMGET key field [field ...]
  3. 示例
    127.0.0.1:6379> HMGET user:1 name age email
    1) "Alice"
    2) "25"
    3) "alice@example.com"
  4. 输出解释:依次返回 name、age、email 字段的值

3.2.3 HGETALL

  1. 功能:获取哈希表中所有的字段和值。返回的结果是字段和值交替出现
  2. 语法
    HGETALL key
  3. 示例
    127.0.0.1:6379> HGETALL user:1
    1) "name"
    2) "Alice"
    3) "age"
    4) "25"
    5) "email"
    6) "alice@example.com"
  4. 输出解释:返回哈希表 user:1 中所有的字段和对应的值

(3)删除哈希字段

3.3.1 HDEL

  1. 功能:删除哈希表中一个或多个字段。返回被删除字段的数量
  2. 语法
    HDEL key field [field ...]
  3. 示例
    127.0.0.1:6379> HDEL user:1 email
    (integer) 1
  4. 输出解释:成功删除了 user:1 哈希表中的 email 字段,返回 1

(4)检查哈希字段是否存在

3.4.1 HEXISTS

  1. 功能:检查哈希表中指定字段是否存在。如果存在,返回 1;否则返回 0
  2. 语法
    HEXISTS key field
  3. 示例
    127.0.0.1:6379> HEXISTS user:1 name
    (integer) 1
    127.0.0.1:6379> HEXISTS user:1 email
    (integer) 0
  4. 输出解释:name 字段存在,返回 1;email 字段已被删除,返回 0

(5)获取哈希表的字段数量

3.5.1 HLEN

  1. 功能:返回哈希表中字段的数量。如果哈希表不存在,返回 0
  2. 语法
    HLEN key
  3. 示例
    127.0.0.1:6379> HLEN user:1
    (integer) 2
  4. 输出解释:哈希表 user:1 中目前有 name 和 age 两个字段,所以返回 2

(6)获取哈希表的所有字段或所有值

3.6.1 HKEYS

  1. 功能:返回哈希表中所有的字段
  2. 语法
    HKEYS key
  3. 示例
    127.0.0.1:6379> HKEYS user:1
    1) "name"
    2) "age"
  4. 输出解释:返回哈希表 user:1 中所有的字段名

3.6.2 HVALS

  1. 功能:返回哈希表中所有的值
  2. 语法
    HVALS key
  3. 示例
    127.0.0.1:6379> HVALS user:1
    1) "Alice"
    2) "25"
  4. 输出解释:返回哈希表 user:1 中所有字段对应的值

(7)数值操作

3.7.1 HINCRBY

  1. 功能:将哈希表中指定字段的值增加指定的整数。如果字段不存在,会先将其值初始化为 0 再进行增加
  2. 语法
    HINCRBY key field increment
  3. 示例
    127.0.0.1:6379> HINCRBY user:1 age 5
    (integer) 30
  4. 输出解释:将 user:1 哈希表中 age 字段的值增加 5,新的值为 30

3.7.2 HINCRBYFLOAT

  1. 功能:将哈希表中指定字段的值增加指定的浮点数。如果字段不存在,会先将其值初始化为 0 再进行增加
  2. 语法
    HINCRBYFLOAT key field increment
  3. 示例:假设 user:1 哈希表中有一个 score 字段,值为 80.5
    127.0.0.1:6379> HINCRBYFLOAT user:1 score 5.5
    "86"
  4. 输出解释:将 user:1 哈希表中 score 字段的值增加 5.5,新的值为 86

四、Set

(1)添加元素

4.1.1 SADD

  1. 功能:向集合中添加一个或多个元素。如果元素已经存在于集合中,则忽略该元素;如果集合不存在,则创建一个新集合
  2. 语法
    SADD key member [member ...]
  3. 示例
    127.0.0.1:6379> SADD myset "apple" "banana" "cherry"
    (integer) 3
  4. 输出解释:返回成功添加到集合中的元素数量。这里添加了三个新元素,所以返回 3

(2)移除元素

4.2.1 SREM

  1. 功能:从集合中移除一个或多个元素。如果元素不存在于集合中,则忽略该元素
  2. 语法
    SREM key member [member ...]
  3. 示例
    127.0.0.1:6379> SREM myset "banana"
    (integer) 1
  4. 输出解释:返回成功从集合中移除的元素数量。这里移除了 "banana" 元素,所以返回 1

(3)获取集合中的所有元素

4.3.1 SMEMBERS

  1. 功能:返回集合中的所有元素
  2. 语法
    SMEMBERS key
  3. 示例
    127.0.0.1:6379> SMEMBERS myset
    1) "apple"
    2) "cherry"
  4. 输出解释:返回集合 myset 中的所有元素

(4)检查元素是否存在于集合中

4.4.1 SISMEMBER

  1. 功能:检查指定元素是否存在于集合中。如果存在,返回 1;否则返回 0
  2. 语法
    SISMEMBER key member
  3. 示例
    127.0.0.1:6379> SISMEMBER myset "apple"
    (integer) 1
    127.0.0.1:6379> SISMEMBER myset "banana"
    (integer) 0
  4. 输出解释:"apple" 存在于集合中,返回 1;"banana" 已被移除,不存在于集合中,返回 0

(5)获取集合的元素数量

4.5.1 SCARD

  1. 功能:返回集合中的元素数量。如果集合不存在,返回 0
  2. 语法
    SCARD key
  3. 示例
    127.0.0.1:6379> SCARD myset
    (integer) 2
  4. 输出解释:集合 myset 中目前有两个元素,所以返回 2

(6)集合运算

4.6.1 SINTER

  1. 功能:返回多个集合的交集,即同时存在于所有集合中的元素
  2. 语法
    SINTER key [key ...]
  3. 示例
    127.0.0.1:6379> SADD set1 "apple" "banana" "cherry"
    (integer) 3
    127.0.0.1:6379> SADD set2 "apple" "date"
    (integer) 2
    127.0.0.1:6379> SINTER set1 set2
    1) "apple"
  4. 输出解释:集合 set1 和 set2 的交集只有 "apple",所以返回该元素

4.6.2 SUNION

  1. 功能:返回多个集合的并集,即包含所有集合中的所有元素
  2. 语法
    SUNION key [key ...]
  3. 示例
    127.0.0.1:6379> SUNION set1 set2
    1) "apple"
    2) "banana"
    3) "cherry"
    4) "date"
  4. 输出解释:集合 set1 和 set2 的并集包含 "apple"、"banana"、"cherry" 和 "date",所以返回这些元素

4.6.3 SDIFF

  1. 功能:返回多个集合的差集,即存在于第一个集合但不存在于其他集合中的元素
  2. 语法
    SDIFF key [key ...]
  3. 示例
    127.0.0.1:6379> SDIFF set1 set2
    1) "banana"
    2) "cherry"
  4. 输出解释:集合 set1 中存在但集合 set2 中不存在的元素是 "banana" 和 "cherry",所以返回这两个元素

(7)随机获取元素

4.7.1 SRANDMEMBER

  1. 功能:随机返回集合中的一个或多个元素。如果不指定数量,则默认返回一个元素;如果指定的数量为正数,则返回不重复的元素;如果指定的数量为负数,则可能返回重复的元素
  2. 语法
    SRANDMEMBER key [count]
  3. 示例
    127.0.0.1:6379> SRANDMEMBER myset
    "apple"
    127.0.0.1:6379> SRANDMEMBER myset 2
    1) "apple"
    2) "cherry"
  4. 输出解释:第一次调用随机返回了 "apple";第二次调用指定返回两个元素,返回了 "apple" 和 "cherry"

(8)随机移除元素

4.8.1 SPOP

  1. 功能:随机移除并返回集合中的一个或多个元素
  2. 语法
    SPOP key [count]
  3. 示例
    127.0.0.1:6379> SPOP myset
    "cherry"
  4. 输出解释:随机移除并返回了集合 myset 中的 "cherry" 元素。移除后,集合 myset 中只剩下 "apple" 元素

(9)移动元素到另一个集合

4.9.1 SMOVE

  1. 功能:将一个元素从一个集合移动到另一个集合。如果源集合中不存在该元素,则不进行任何操作;如果目标集合不存在,则创建一个新集合
  2. 语法
    SMOVE source destination member
  3. 示例
    127.0.0.1:6379> SMOVE myset newset "apple"
    (integer) 1
  4. 输出解释:成功将 "apple" 元素从 myset 集合移动到 newset 集合,返回 1。此时 myset 集合为空,newset 集合包含 "apple" 元素

五、Zset

(1)添加元素

5.1.1 ZADD

  1. 功能:向有序集合中添加一个或多个成员及其分数。如果成员已存在,则更新其分数;如果有序集合不存在,则创建一个新的有序集合
  2. 语法
    ZADD key [NX|XX] [CH] [INCR] score member [score member ...]NX:仅当成员不存在时添加
    XX:仅当成员已存在时更新分数
    CH:返回被修改的成员数量,包括新添加和分数更新的成员
    INCR:对已存在成员的分数进行增量操作,此时只能指定一个成员
  3. 示例
    127.0.0.1:6379> ZADD myzset 10 "member1" 20 "member2" 30 "member3"
    (integer) 3
  4. 输出解释:成功添加了三个成员,返回 3。此时有序集合 myzset 包含 ("member1", 10)、("member2", 20)、("member3", 30)

(2)获取成员分数

5.2.1 ZSCORE

  1. 功能:返回有序集合中指定成员的分数。如果成员不存在,返回 (nil)
  2. 语法
    ZSCORE key member
  3. 示例
    127.0.0.1:6379> ZSCORE myzset "member2"
    "20"
  4. 输出解释:返回成员 "member2" 的分数 20

(3)获取成员排名

5.3.1 ZRANK

  1. 功能:返回有序集合中指定成员的排名(按分数从小到大排序),排名从 0 开始。如果成员不存在,返回 (nil)
  2. 语法
    ZRANK key member
  3. 示例
    127.0.0.1:6379> ZRANK myzset "member2"
    (integer) 1
  4. 输出解释:成员 "member2" 在有序集合中按分数从小到大排第 1(排名从 0 开始)

5.3.2 ZREVRANK

  1. 功能:返回有序集合中指定成员的排名(按分数从大到小排序),排名从 0 开始。如果成员不存在,返回 (nil)
  2. 语法
    ZREVRANK key member
  3. 示例
    127.0.0.1:6379> ZREVRANK myzset "member2"
    (integer) 1
  4. 输出解释:成员 "member2" 在有序集合中按分数从大到小排第 1(排名从 0 开始)

(4)获取指定范围的成员

5.4.1 ZRANGE

  1. 功能:返回有序集合中指定排名范围(按分数从小到大)的成员。可以选择同时返回成员的分数
  2. 语法
    ZRANGE key start stop [WITHSCORES]
  3. 示例
    127.0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES
    1) "member1"
    2) "10"
    3) "member2"
    4) "20"
    5) "member3"
    6) "30"
  4. 输出解释:返回有序集合 myzset 中所有成员及其分数,按分数从小到大排序

5.4.2 ZREVRANGE

  1. 功能:返回有序集合中指定排名范围(按分数从大到小)的成员。可以选择同时返回成员的分数
  2. 语法
    ZREVRANGE key start stop [WITHSCORES]
  3. 示例
    127.0.0.1:6379> ZREVRANGE myzset 0 -1 WITHSCORES
    1) "member3"
    2) "30"
    3) "member2"
    4) "20"
    5) "member1"
    6) "10"
  4. 输出解释:返回有序集合 myzset 中所有成员及其分数,按分数从大到小排序

(5)获取指定分数范围的成员

5.5.1 ZRANGEBYSCORE

  1. 功能:返回有序集合中指定分数范围(按分数从小到大)的成员。可以选择同时返回成员的分数
  2. 语法
    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
  3. 示例
    127.0.0.1:6379> ZRANGEBYSCORE myzset 10 20 WITHSCORES
    1) "member1"
    2) "10"
    3) "member2"
    4) "20"
  4. 输出解释:返回有序集合 myzset 中分数在 10 到 20 之间的成员及其分数,按分数从小到大排序

5.5.2 ZREVRANGEBYSCORE

  1. 功能:返回有序集合中指定分数范围(按分数从大到小)的成员。可以选择同时返回成员的分数
  2. 语法
    ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
  3. 示例
    127.0.0.1:6379> ZREVRANGEBYSCORE myzset 20 10 WITHSCORES
    1) "member2"
    2) "20"
    3) "member1"
    4) "10"
  4. 输出解释:返回有序集合 myzset 中分数在 10 到 20 之间的成员及其分数,按分数从大到小排序

(6)移除成员

5.6.1 ZREM

  1. 功能:从有序集合中移除一个或多个成员。返回成功移除的成员数量
  2. 语法
    ZREM key member [member ...]
  3. 示例
    127.0.0.1:6379> ZREM myzset "member2"
    (integer) 1
  4. 输出解释:成功移除了成员 "member2",返回 1

(7)增加成员分数

5.7.1 ZINCRBY

  1. 功能:为有序集合中指定成员的分数增加指定的增量。如果成员不存在,则先添加该成员并将分数初始化为增量值
  2. 语法
    ZINCRBY key increment member
  3. 示例
    127.0.0.1:6379> ZINCRBY myzset 5 "member1"
    "15"
  4. 输出解释:成员 "member1" 的分数增加 5 后变为 15

(8)获取有序集合的成员数量

5.8.1 ZCARD

  1. 功能:返回有序集合中的成员数量。如果有序集合不存在,返回 0
  2. 语法
    ZCARD key
  3. 示例
    127.0.0.1:6379> ZCARD myzset
    (integer) 2
  4. 输出解释:有序集合 myzset 中目前有 2 个成员

(9)获取指定分数范围内的成员数量

5.9.1 ZCOUNT

  1. 功能:返回有序集合中指定分数范围内的成员数量
  2. 语法
    ZCOUNT key min max
  3. 示例
    127.0.0.1:6379> ZCOUNT myzset 10 20
    (integer) 1
  4. 输出解释:有序集合 myzset 中分数在 10 到 20 之间的成员有 1 个

(10)移除指定排名范围的成员

5.10.1 ZREMRANGEBYRANK

  1. 功能:移除有序集合中指定排名范围(按分数从小到大)的成员。返回被移除的成员数量
  2. 语法
    ZREMRANGEBYRANK key start stop
  3. 示例
    127.0.0.1:6379> ZREMRANGEBYRANK myzset 0 0
    (integer) 1
  4. 输出解释:移除了有序集合 myzset 中排名第 0 的成员,返回 1

(11)移除指定分数范围的成员

5.11.1 ZREMRANGEBYSCORE

  1. 功能:移除有序集合中指定分数范围的成员。返回被移除的成员数量
  2. 语法
    ZREMRANGEBYSCORE key min max
  3. 示例
    127.0.0.1:6379> ZREMRANGEBYSCORE myzset 10 20
    (integer) 0
  4. 输出解释:由于之前移除操作后,分数在 10 到 20 之间已无成员,所以返回 0
    http://www.xdnf.cn/news/5275.html

    相关文章:

  • webgl入门实例-09索引缓冲区示例
  • BH1750光照传感器---附代码
  • java + spring boot + mybatis 通过时间段进行查询
  • 【JavaScript】二十四、JS的执行机制事件循环 + location + navigator + history
  • 基于尚硅谷FreeRTOS视频笔记——13—HAL库和RTOS时钟源问题
  • UE学习记录part18
  • Java锁的分类与解析
  • LeetCode算法题(Go语言实现)_51
  • Vue3如何选择传参方式
  • C++面试
  • 【HDFS入门】HDFS核心配置与优化指南概述
  • 【Python学习笔记】Pandas实现Excel质检记录表初审、复核及质检统计
  • webgl入门实例-08索引缓冲区的基本概念
  • 杂记-LeetCode中部分题思路详解与笔记-HOT100篇-其三
  • 二分查找-LeetCode
  • 代码学习总结(三)
  • 算法5-16 对二进制字符串解码
  • 多 Agent 协作怎么整:从谷歌A2A到多Agent交互方案实现
  • STL简介(了解)
  • 【无标题】
  • Qt核心知识总结
  • 第六章:6.3求一个3*3的整型矩阵对角线元素之和
  • ESP32-idf学习(二)esp32C3作服务端与电脑蓝牙数据交互
  • 机器学习有多少种算法?当下入门需要全部学习吗?
  • vscode+keil嵌入式软件开发全流程
  • C++笔记-list
  • 【已更新】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测
  • 06-DevOps-自动构建Docker镜像
  • 动态规划专题5:最长上升子序列
  • LeetCode hot 100—括号生成