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.pswp.cn/news/902375.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/news/902375.shtml
    英文地址,請注明出處:http://en.pswp.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…