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.mzph.cn/news/902375.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    【Unity】使用Cinemachine+CharacterController实现第三人称视角下的角色视角、移动和跳跃控制

    1.初始配置 安装Cinemachine插件给角色添加CharacterConroller创建Cinemachine-->Free Look Camera在Free Look Camera中调整参数,Y Axis勾选Inver,X Axis取消勾选InverFree Look Camera要看向角色 跟随角色(自行设置,我就不…

    深入理解 DML 和 DQL:SQL 数据操作与查询全解析

    深入理解 DML 和 DQL:SQL 数据操作与查询全解析 在数据库管理中,SQL(结构化查询语言)是操作和查询数据的核心工具。其中,DML(Data Manipulation Language,数据操作语言) 和 DQL&…

    MongoDB数据库的安装到入门使用详细讲解

    本篇文章主要讲解MongoDB的安装使用教程及基础的数据库管理和操作能力的讲解,通过本篇文章您可以快速的掌握对MongDB数据库的基本认识及,基础开发能力。 一、MongoDB介绍 MongoDB是一款免费开源的非关系型数据库,该数据库适应于复杂关系的存储和管理,非常适合数据结构复杂…

    git提交实现文件或目录忽略

    前言 开发中使用git下载项目代码开发,存在不需要提交文件或目录,这里记录下ideajava项目开发添加以下配置可忽略不需要提交文件,以方便我们提交代码时,查看及提交文件只涉及项目代码修改文件。 git提交实现文件或目录忽略 .gitignore 文件的内容列出了在…

    go语言的八股文

    1.go语言触发异常的场景有哪些 运行时错误 1.空指针解引用:尝试访问一个未初始化的指针指向的内存,会导致程序崩溃并触发异常。 2.数组越界访问:试图访问数组中不存在的索引,比如数组长度为5,却尝试访问索引为10的元素…

    Ubuntu安装MySQL步骤及注意事项

    一、安装前准备 1. 系统更新:在安装 MySQL 之前,确保你的 Ubuntu 系统软件包是最新的,这能避免因软件包版本问题导致的安装错误,并获取最新的安全补丁。打开终端,执行以下两条命令: sudo apt update sudo …

    【愚公系列】《Python网络爬虫从入门到精通》054-Scrapy 文件下载

    🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…

    2025最新︱中国信通院静态应用程序安全测试(SAST)工具能力评估,悬镜安全灵脉AI通过评估!

    背景 研发运营安全(DevSecOps)从研发运营(DevOps)的概念延伸和演变而来,其核心理念是将安全贯穿从开发到运营的软件开发生命周期的每一个环节,在每个阶段自动实施安全措施,从而实现快速开发交付…

    辛格迪客户案例 | 浙江高跖医药委托生产质量管理协同(OWL MAH)项目

    一、案例概述 浙江高跖医药科技股份有限公司是一家集“研、产、销”为一体的专业化药品持证企业。高跖医药自成立之初就建立并运行着一套相对完善的质量管理体系,涵盖了药品的研发、生产监管及销售。高跖医药于2022年选择实施了辛格迪的“委托生产质量管理协同解决…

    【NLP 65、实践 ⑯ 基于Agent优化文章】

    羁绊由我而起,痛苦也由我承担 —— 25.4.18 一、⭐【核心函数】定义大模型调用函数 call_large_model prompt:用户传入的提示词(如 “请分析这篇作文的主题”),指导模型执行任务 client:Zhipu…

    【锂电池SOH估计】BP神经网络锂电池健康状态估计,锂电池SOH估计(Matlab完整源码和数据)

    目录 效果一览程序获取程序内容研究内容基于BP神经网络的锂电池健康状态估计研究摘要关键词1. 引言1.1 研究背景1.2 研究意义1.3 研究目标2. 文献综述2.1 锂电池SOH估计理论基础2.2 传统SOH估计方法2.3 基于BP神经网络的SOH估计研究进展2.4 研究空白与创新点3. BP神经网络原理3…

    2025第十六届蓝桥杯python B组满分题解(详细)

    目录 前言 A: 攻击次数 解题思路: 代码: B: 最长字符串 解题思路: 代码: C: LQ图形 解题思路: 代码: D: 最多次数 解题思路: 代码: E: A * B Problem 解题思路&…

    第十二节:原理深挖-React Fiber架构核心思想

    链表结构、时间切片(Time Slicing) 优先级调度实现(如用户输入>网络请求) React Fiber架构深度解析:从链表到优先级调度的革命性升级 一、Fiber架构核心设计思想 React Fiber是React 16的底层协调算法重构&#x…

    你学会了些什么211201?--http基础知识

    概念 HTTP–Hyper Text Transfer Protocol,超文本传输协议;是一种建立在TCP上的无状态连接(短连接)。 整个基本的工作流程是:客户端发送一个HTTP请求(Request ),这个请求说明了客户端…

    MCU开发学习记录8 - 基本定时器学习与实践(HAL库) - 定时器DMA循环模式修改ARR值、定时器中断方式修改ARR值 - STM32CubeMX

    名词解释: TRGO:Trigger Out General Purpose Output ARR:Auto-reload PSC:Prescaler CNT:Counter EGR:event generation register 本文将介绍基本定时器的概念、相关函数以及STM32CubeMX生成定时器的配置…

    考研系列-计算机网络冲刺考点汇总(上)

    写在前面 本文将总结王道408考研课程的计算机网络冲刺考点的第一章到第三章内容(计算机网络体系结构、物理层、数据链路层)。【图片较多,加载需要时间,可以提前打开加载~~】 第一章、计算机网络体系结构 注意:PCI(头部…

    设计模式每日硬核训练 Day 14:组合模式(Composite Pattern)完整讲解与实战应用

    🔄 回顾 Day 13:桥接模式小结 在 Day 13 中,我们学习了桥接模式(Bridge Pattern): 用于将“抽象”与“实现”分离,适用于双维度变化场景(如图形类型 渲染方式)。它强调…

    讯联桌面TV版apk下载-讯联桌面安卓电视版免费下载安装教程

    在智能电视的使用过程中,一款好用的桌面应用能极大提升我们的使用体验。讯联桌面 TV 版就是这样一款备受关注的应用,它可以让安卓电视拥有更个性化、便捷的操作界面。今天,就为大家详细介绍讯联桌面 TV 版 apk 的免费下载安装教程。 一、下载…

    Nginx知识点

    Nginx发展历史 Nginx 是由俄罗斯程序员 Igor Sysoev 开发的高性能开源 Web 服务器、反向代理服务器和负载均衡器 ,其历史如下: 起源与早期开发(2002 - 2004 年) 2002 年,当时 Igor Sysoev 在为俄罗斯门户网站 Rambl…

    uview1.0 tabs组件放到u-popup中在微信小程序中滑块样式错乱

    解决思路 重新计算布局信息&#xff1a;在弹窗显示后重新调用 init 方法来计算组件的布局信息。使用 nextTick&#xff1a;保证在视图更新之后再进行布局信息的计算。 <u-tabs ref"tabsRef" ></u-tabs> makeClick(){this.makeShowtruethis.$nextTick…