国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Redis】Redis基礎(chǔ)命令集詳解

這篇具有很好參考價(jià)值的文章主要介紹了【Redis】Redis基礎(chǔ)命令集詳解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【Redis01】Redis常用命令

一、基礎(chǔ)命令

1、ping(心跳命令)

鍵入ping命令,若看到PONG響應(yīng),則說明客戶端與Redis的連接時(shí)正常的。

【Redis】Redis基礎(chǔ)命令集詳解

2、get/set(讀寫鍵值命令)

set key value 會(huì)將指定 key-value寫入到DB。get key則會(huì)讀取指定key的value值。

【Redis】Redis基礎(chǔ)命令集詳解

3、select(切換數(shù)據(jù)庫)

redis默認(rèn)有 16 個(gè)數(shù)據(jù)庫。這個(gè)在 Redis Desktop Manager(RDM)圖形客戶端中可以直 觀地看到。默認(rèn)使用的是 0 號(hào) DB,可以通過 select db 索引來切換 DB。如圖,切換到1號(hào)DB:

【Redis】Redis基礎(chǔ)命令集詳解

4、dbsize(查看key數(shù)量)

dbsize 命令可以查看當(dāng)前數(shù)據(jù)庫中 key 的數(shù)量。

【Redis】Redis基礎(chǔ)命令集詳解

5、flushdb(刪除當(dāng)前庫中所有數(shù)據(jù))

清楚當(dāng)前DB中的所有數(shù)據(jù),不影響其他DB。

【Redis】Redis基礎(chǔ)命令集詳解

6、flushall(刪除所有DB中的數(shù)據(jù))

【Redis】Redis基礎(chǔ)命令集詳解

二、Key 相關(guān)操作命令

1、keys

格式:KEYS pattern

功能:查找所有符合給定模式 pattern 的 key,pattern 為正則表達(dá)式。

說明:KEYS 的速度非???,但在一個(gè)大的數(shù)據(jù)庫中使用它可能會(huì)阻塞當(dāng)前服務(wù)器的服務(wù)。所以生產(chǎn)環(huán)境中一般不使用該命令,而使用 scan 命令代替。

如圖:查看所有模式與查看所有開頭結(jié)尾為‘a(chǎn)’的模式

【Redis】Redis基礎(chǔ)命令集詳解

2、exists

格式:EXISTS key

功能:檢查給定 key 是否存在。

說明:若 key 存在,返回 1 ,否則返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

3、del

格式:DEL key [key …]

功能:刪除給定的一個(gè)或多個(gè) key 。不存在的 key 會(huì)被忽略。

說明:返回被刪除 key 的數(shù)量。

【Redis】Redis基礎(chǔ)命令集詳解

4、rename

l 格式:RENAME key newkey

l 功能:將 key 改名為 newkey。

l 說明:當(dāng) key 和 newkey 相同,或者 key 不存在時(shí),返回一個(gè)錯(cuò)誤。當(dāng) newkey 已經(jīng)存在時(shí), RENAME 命令將覆蓋舊值。改名成功時(shí)提示 OK ,失敗時(shí)候返回一個(gè)錯(cuò)誤。

【Redis】Redis基礎(chǔ)命令集詳解

5、move

l 格式:MOVE key db

l 功能:將當(dāng)前數(shù)據(jù)庫的 key 移動(dòng)到給定的數(shù)據(jù)庫 db 當(dāng)中。

l 說明:如果當(dāng)前數(shù)據(jù)庫(源數(shù)據(jù)庫)和給定數(shù)據(jù)庫(目標(biāo)數(shù)據(jù)庫)有相同名字的給定 key ,或者 key 不存在于當(dāng)前數(shù)據(jù)庫,那么 MOVE 沒有任何效果。移動(dòng)成功返回 1 ,失敗則返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

6、type

l 格式:TYPE key

l 功能:返回 key 所儲(chǔ)存的值的類型。

l 說明:返回值有以下六種

? none (key 不存在)

? string (字符串)

? list (列表)

? set (集合)

? zset (有序集)

? hash (哈希表)

7、expire/pexpire

l 格式:EXPIRE key seconds

l 功能:為給定 key 設(shè)置生存時(shí)間。當(dāng) key 過期時(shí)(生存時(shí)間為 0),它會(huì)被自動(dòng)刪除。 expire 的時(shí)間單位為秒,pexpire 的時(shí)間單位為毫秒。在 Redis 中,帶有生存時(shí)間的 key被稱為“易失”(volatile)。

l 說明:生存時(shí)間設(shè)置成功返回 1。若 key 不存在時(shí)返回 0 。rename 操作不會(huì)改變 key的生存時(shí)間。

8、ttl/pttl

格式:TTL key

功能:TTL, time to live,返回給定 key 的剩余生存時(shí)間。

說明:其返回值存在三種可能:

? 1/當(dāng) key 不存在時(shí),返回 -2 。

? 2/當(dāng) key 存在但沒有設(shè)置剩余生存時(shí)間時(shí),返回 -1 。

? 3/否則,返回 key 的剩余生存時(shí)間。ttl 命令返回的時(shí)間單位為秒,而 pttl 命令返回的時(shí)間單位為毫秒。

【Redis】Redis基礎(chǔ)命令集詳解

9、persist

l 格式:PERSIST key

l 功能:去除給定 key 的生存時(shí)間,將這個(gè) key 從“易失的”轉(zhuǎn)換成“持久的”。

l 說明:當(dāng)生存時(shí)間移除成功時(shí),返回 1;若 key 不存在或 key 沒有設(shè)置生存時(shí)間,則返回 0。

【Redis】Redis基礎(chǔ)命令集詳解

10、randomkey

l 格式:RANDOMKEY

l 功能:從當(dāng)前數(shù)據(jù)庫中隨機(jī)返回(不刪除)一個(gè) key。

l 說明:當(dāng)數(shù)據(jù)庫不為空時(shí),返回一個(gè) key。當(dāng)數(shù)據(jù)庫為空時(shí),返回 nil。

【Redis】Redis基礎(chǔ)命令集詳解

11、scan
  • 格式:SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]

  • 功能:用于迭代數(shù)據(jù)庫中的數(shù)據(jù)庫鍵。其各個(gè)選項(xiàng)的意義為:

    • cursor:本次迭代開始的游標(biāo)。
    • pattern :本次迭代要匹配的 key 的模式。
    • count :本次迭代要從數(shù)據(jù)集里返回多少元素,默認(rèn)值為 10 。
    • type:本次迭代要返回的value 的類型,默認(rèn)為所有類型。

    SCAN 命令是一個(gè)基于游標(biāo) cursor 的迭代器:SCAN 命令每次被調(diào)用之后,都會(huì)向用戶返回返回一個(gè)包含兩個(gè)元素的數(shù)組, 第一個(gè)元素是用于進(jìn)行下一次迭代的新游標(biāo),而第二個(gè)元素則是一個(gè)數(shù)組, 這個(gè)數(shù)組中包含了所有被迭代的元素。用戶在下次迭代時(shí)需要使用這個(gè)新游標(biāo)作為 SCAN 命令的游標(biāo)參數(shù),以此來延續(xù)之前的迭代過程。當(dāng) SCAN 命令的游標(biāo)參數(shù)被設(shè)置為 0 時(shí),服務(wù)器將開始一次新的迭代。如果新游標(biāo)返回 0表示迭代已結(jié)束。

  • 說明:使用間斷的、負(fù)數(shù)、超出范圍或者其他非正常的游標(biāo)來執(zhí)行增量式迭代不會(huì)造成服務(wù)器崩潰。

    當(dāng)數(shù)據(jù)量很大時(shí),count 的數(shù)量的指定可能會(huì)不起作用,Redis 會(huì)自動(dòng)調(diào)整每次的遍歷數(shù)目。由于 scan 命令每次執(zhí)行都只會(huì)返回少量元素,所以該命令可以用于生產(chǎn)環(huán)境,而不會(huì)出現(xiàn)像 KEYS 命令帶來的服務(wù)器阻塞問題。

    增量式迭代命令所使用的算法只保證在數(shù)據(jù)集的大小有界的情況下迭代才會(huì)停止,換句話說,如果被迭代數(shù)據(jù)集的大小不斷地增長(zhǎng)的話,增量式迭代命令可能永遠(yuǎn)也無法完成一次完整迭代。即當(dāng)一個(gè)數(shù)據(jù)集不斷地變大時(shí),想要訪問這個(gè)數(shù)據(jù)集中的所有元素就需要做越來越多的工作, 能否結(jié)束一個(gè)迭代取決于用戶執(zhí)行迭代的速度是否比數(shù)據(jù)集增長(zhǎng)的速度更快。

  • 相關(guān)命令:另外還有 3 個(gè) scan 命令用于對(duì)三種類型的 value 進(jìn)行遍歷。

    • hscan:屬于 Hash 型 Value 操作命令集合,用于遍歷當(dāng)前 db 中指定 Hash 表的所有 field-value 對(duì)。
    • sscan:屬于 Set 型Value 操作命令集合,用于遍歷當(dāng)前 db 中指定 set 集合的所有元素
    • zscan:屬于 ZSet 型 Value 操作命令集合,用于遍歷當(dāng)前 db 中指定有序集合的所有元素(數(shù)值與元素值)

三、String型Value操作命令

Redis 存儲(chǔ)數(shù)據(jù)的 Value 可以是一個(gè) String 類型數(shù)據(jù)。String 類型的Value 是 Redis 中最基本,最常見的類型。String 類型的 Value 中可以存放任意數(shù)據(jù),包括數(shù)值型,甚至是二進(jìn)制的圖片、音頻、視頻、序列化對(duì)象等。一個(gè) String 類型的 Value 最大是 512M 大小。

1、set

格式:SET key value [EX seconds | PX milliseconds] [NX|XX]

功能:SET 除了可以直接將 key 的值設(shè)為 value 外,還可以指定一些參數(shù)。

  • EX seconds:為當(dāng)前 key 設(shè)置過期時(shí)間,單位秒。等價(jià)于 SETEX 命令。

  • PX milliseconds:為當(dāng)前 key 設(shè)置過期時(shí)間,單位毫秒。等價(jià)于 PSETEX 命令。

  • NX:指定的 key 不存在才會(huì)設(shè)置成功,用于添加指定的 key。等價(jià)于 SETNX 命令。

  • XX:指定的 key 必須存在才會(huì)設(shè)置成功,用于更新指定key 的value。

說明:如果value 字符串中帶有空格,則該字符串需要使用雙引號(hào)或單引號(hào)引起來,否則會(huì)認(rèn)為 set 命令的參數(shù)數(shù)量不正確,報(bào)錯(cuò)。

【Redis】Redis基礎(chǔ)命令集詳解

2、setex/psetex

格式:SETEX/PSETEX key seconds value

功能:set expire,其不僅為 key 指定了value,還為其設(shè)置了生存時(shí)間。setex 的單位為秒,psetex 的單位為毫秒。

說明:如果 key 已經(jīng)存在, 則覆寫舊值。該命令類似于以下兩個(gè)命令,不同之處是, SETEX 是一個(gè)原子性操作,關(guān)聯(lián)值和設(shè)置生存時(shí)間兩個(gè)動(dòng)作會(huì)在同一時(shí)間內(nèi)完成,該命令在 Redis 用作緩存時(shí),非常實(shí)用。

  • SET key value

  • EXPIRE key seconds # 設(shè)置生存時(shí)間

如下圖兩條指令作用相同:

【Redis】Redis基礎(chǔ)命令集詳解

3、setnx

l 格式:SETNX key value

l 功能:SET if Not eXists,將 key 的值設(shè)為 value ,當(dāng)且僅當(dāng) key 不存在。若給定的 key

已經(jīng)存在,則 SETNX 不做任何動(dòng)作。成功,返回 1,否則,返回 0。

l 說明:該命令等價(jià)于 set key value nx

【Redis】Redis基礎(chǔ)命令集詳解

4、getset

格式:GETSET key value

功能:將給定 key 的值設(shè)為 value ,并返回 key 的舊值。

說明:當(dāng) key 存在但不是字符串類型時(shí),返回一個(gè)錯(cuò)誤;當(dāng) key 不存在時(shí),返回 nil 。

【Redis】Redis基礎(chǔ)命令集詳解

5、mset/msetnx

格式:MSET/MSETNX key value [key value …]

功能:同時(shí)設(shè)置一個(gè)或多個(gè) key-value 對(duì)。

說明:如果某個(gè)給定 key 已經(jīng)存在,那么 MSET 會(huì)用新值覆蓋原來的舊值,如果這不 是你所希望的效果,請(qǐng)考慮使用 MSETNX 命令:它只會(huì)在所有給定 key 都不存在的情 況下進(jìn)行設(shè)置操作。MSET/MSETNX 是一個(gè)原子性(atomic)操作,所有給定 key 都會(huì)在同 一時(shí)間內(nèi)被設(shè)置,某些給定 key 被更新而另一些給定 key 沒有改變的情況不可能發(fā)生。該命令永不失敗。

【Redis】Redis基礎(chǔ)命令集詳解

6、mget

格式:MGET key [key …]

功能:返回所有(一個(gè)或多個(gè))給定 key 的值。

說明:如果給定的 key 里面,有某個(gè) key 不存在,那么這個(gè) key 返回特殊值 nil 。因此,該命令永不失敗。

【Redis】Redis基礎(chǔ)命令集詳解

7、append

格式:APPEND key value

功能:如果 key 已經(jīng)存在并且是一個(gè)字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。如果 key 不存在, APPEND 就簡(jiǎn)單地將給定 key 設(shè)為 value ,就像執(zhí)行 SET key value 一樣。

說明:追加 value 之后, key 中字符串的長(zhǎng)度。

【Redis】Redis基礎(chǔ)命令集詳解

8、incr/decr

格式:INCR key 或 DECR key

功能:increment,自動(dòng)遞增。將 key 中存儲(chǔ)的數(shù)字值增一。decrement,自動(dòng)遞減。將 key 中存儲(chǔ)的數(shù)字值減一。

說明:如果 key 不存在,那么 key 的值會(huì)先被初始化為 0,然后再執(zhí)行增一/減一操作。如果值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤提示。如果執(zhí)行正確,則返回增一/減一后的值。

【Redis】Redis基礎(chǔ)命令集詳解

9、incrby/decrby

格式:INCRBY key increment 或 DECRBY key decrement

功能:將 key 中存儲(chǔ)的數(shù)字值增加/減少指定的數(shù)值,這個(gè)數(shù)值只能是整數(shù),可以是負(fù)數(shù),但不能是小數(shù)。

說明:如果 key 不存在,那么 key 的值會(huì)先被初始化為 0,然后再執(zhí)行增/減操作。如果值不能表示為數(shù)字,那么返回一個(gè)錯(cuò)誤提示。如果執(zhí)行正確,則返回增/減后的值。

【Redis】Redis基礎(chǔ)命令集詳解

10、incrbyfloat

格式:INCRBYFLOAT key increment

功能:為 key 中所儲(chǔ)存的值加上浮點(diǎn)數(shù)增量 increment 。

說明:與之前的說明相同。沒有 decrbyfloat 命令,但 increment 為負(fù)數(shù)可以實(shí)現(xiàn)減操作效果。

【Redis】Redis基礎(chǔ)命令集詳解

11、strlen

格式:STRLEN key

功能:返回 key 所儲(chǔ)存的字符串值的長(zhǎng)度。

說明:當(dāng) key 儲(chǔ)存的不是字符串值時(shí),返回一個(gè)錯(cuò)誤;當(dāng) key 不存在時(shí),返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

12、getrange

格式:GETRANGE key start end

功能:返回 key 中字符串值的子字符串,字符串的截取范圍由 start 和 end 兩個(gè)偏移量決定,包括 start 和 end 在內(nèi)。

說明:end 必須要比 start 大。支持負(fù)數(shù)偏移量,表示從字符串最后開始計(jì)數(shù),-1 表示最后一個(gè)字符,-2 表示倒數(shù)第二個(gè),以此類推。

【Redis】Redis基礎(chǔ)命令集詳解

13、setrange

格式:SETRANGE key offset value

功能:用 value 參數(shù)替換給定 key 所儲(chǔ)存的字符串值 str,從偏移量 offset 開始。

說明:當(dāng) offset 值大于 str 長(zhǎng)度時(shí),中間使用零字節(jié)\x00 填充,即 0000 0000 字節(jié)填充;對(duì)于不存在的 key 當(dāng)作空串處理。

【Redis】Redis基礎(chǔ)命令集詳解

14、位操作命令

名稱中包含 BIT 的命令,都是對(duì)二進(jìn)制位的操作命令,例如,setbit、getbit、bitcount、bittop、bitfield,這些命令不常用。

15、典型應(yīng)用場(chǎng)景

Value 為 String 類型的應(yīng)用場(chǎng)景很多,這里僅舉這種典型應(yīng)用場(chǎng)景的例子:

  • 數(shù)據(jù)緩存:Redis 作為數(shù)據(jù)緩存層,MySQL 作為數(shù)據(jù)存儲(chǔ)層。應(yīng)用服務(wù)器首先從 Redis 中獲取數(shù)據(jù),如果緩存層中沒有,則從MySQL 中獲取后先存入緩存層再返回給應(yīng)用服務(wù)器。

  • 計(jì)數(shù)器:在 Redis 中寫入一個(gè) value 為數(shù)值型的 key 作為平臺(tái)計(jì)數(shù)器、視頻播放計(jì)數(shù)器等。每個(gè)有效客戶端訪問一次,或視頻每播放一次,都是直接修改 Redis 中的計(jì)數(shù)器,然后再以異步方式持久化到其它數(shù)據(jù)源中,例如持久化到 MySQL。

  • 共享Session:對(duì)于一個(gè)分布式應(yīng)用系統(tǒng),如果將類似用戶登錄信息這樣的 Session 數(shù)據(jù)保存在提供登錄服務(wù)的服務(wù)器中,那么如果用戶再次提交像收藏、支付等請(qǐng)求時(shí)可能會(huì)出現(xiàn)問題:在提供收藏、支付等服務(wù)的服務(wù)器中并沒有該用戶的 Session 數(shù)據(jù),從而導(dǎo)致該用戶需要重新登錄。對(duì)于用戶來說,這是不能接受的。此時(shí),可以將系統(tǒng)中所有用戶的 Session 數(shù)據(jù)全部保存到 Redis 中,用戶在提交新的請(qǐng)求后,系統(tǒng)先從Redis 中查找相應(yīng)的Session 數(shù)據(jù),如果存在,則再進(jìn)行相關(guān)操作,否則跳轉(zhuǎn)到登錄頁面。這樣就不會(huì)引發(fā)“重新登錄”問題。

    【Redis】Redis基礎(chǔ)命令集詳解

  • 限速器:現(xiàn)在很多平臺(tái)為了防止 DoS(Denial of Service,拒絕服務(wù))攻擊,一般都會(huì)限制一個(gè) IP不能在一秒內(nèi)訪問超過 n 次。而 Redis 可以可以結(jié)合 key 的過期時(shí)間與 incr 命令來完成限速功能,充當(dāng)限速器。注意,其無法防止 DDoS(Distributed Denial of Service,分布式拒絕服務(wù))攻擊。

四、Hash型Value操作命令

Redis 存儲(chǔ)數(shù)據(jù)的 Value 可以是一個(gè) Hash 類型。Hash 類型也稱為 Hash 表、字典等。

Hash 表就是一個(gè)映射表 Map,也是由鍵-值對(duì)構(gòu)成,為了與整體的 key 進(jìn)行區(qū)分,這里的鍵稱為 field,值稱為 value。注意,Redis 的 Hash 表中的 field-value 對(duì)均為 String 類型。

1、hset

格式:HSET key field value

功能:將哈希表 key 中的域 field 的值設(shè)為 value 。

說明:如果 key 不存在,一個(gè)新的哈希表被創(chuàng)建并進(jìn)行 HSET 操作。如果域 field 已經(jīng)存在于哈希表中,舊值將被覆蓋。如果 field 是哈希表中的一個(gè)新建域,并且值設(shè)置成功,返回 1 。如果哈希表中域 field 已經(jīng)存在且舊值已被新值覆蓋,返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

2、hget

格式:HGET key field

功能:返回哈希表 key 中給定域 field 的值。

說明:當(dāng)給定域不存在或是給定 key 不存在時(shí),返回 nil 。

【Redis】Redis基礎(chǔ)命令集詳解

3、hmset

格式:HMSET key field value [field value …]

功能:同時(shí)將多個(gè) field-value (域-值)對(duì)設(shè)置到哈希表 key 中。

說明:此命令會(huì)覆蓋哈希表中已存在的域。如果 key 不存在,一個(gè)空哈希表被創(chuàng)建并執(zhí)行 HMSET 操作。如果命令執(zhí)行成功,返回 OK 。當(dāng) key 不是哈希表(hash)類型時(shí),返回一個(gè)錯(cuò)誤。

【Redis】Redis基礎(chǔ)命令集詳解

4、hmget

格式:HMGET key field [field …]

功能:按照給出順序返回哈希表 key 中一個(gè)或多個(gè)域的值。

說明:如果給定的域不存在于哈希表,那么返回一個(gè) nil 值。因?yàn)椴淮嬖诘?key 被當(dāng)作一個(gè)空哈希表來處理,所以對(duì)一個(gè)不存在的 key 進(jìn)行 HMGET 操作將返回一個(gè)只帶有 nil 值的表。

【Redis】Redis基礎(chǔ)命令集詳解

5、hgetall

格式:HGETALL key

功能:返回哈希表 key 中所有的域和值。

說明:在返回值里,緊跟每個(gè)域名(field name)之后是域的值(value),所以返回值的長(zhǎng)度是哈希表大小的兩倍。若 key 不存在,返回空列表。若 key 中包含大量元素,則該命令可能會(huì)阻塞 Redis 服務(wù)。所以生產(chǎn)環(huán)境中一般不使用該命令,而使用 hscan 命令代替。

【Redis】Redis基礎(chǔ)命令集詳解

6、hsetnx

格式:HSETNX key field value

功能:將哈希表 key 中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在。

說明:若域 field 已經(jīng)存在,該操作無效。如果 key 不存在,一個(gè)新哈希表被創(chuàng)建并執(zhí)行 HSETNX 命令。

【Redis】Redis基礎(chǔ)命令集詳解

7、hdel

格式:HDEL key field [field …]

功能:刪除哈希表 key 中的一個(gè)或多個(gè)指定域,不存在的域?qū)⒈缓雎浴?/p>

說明:返回被成功移除的域的數(shù)量,不包括被忽略的域。

【Redis】Redis基礎(chǔ)命令集詳解

8、hexists

格式:HEXISTS key field

功能:查看哈希表 key 中給定域 field 是否存在。

說明:如果哈希表含有給定域,返回 1 。如果不含有給定域,或 key 不存在,返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

9、hincrby/hincrbyfloat

格式:HINCRBY key field increment

功能:為哈希表 key 中的域 field 的值加上增量 increment 。hincrby 命令只能增加整數(shù)值,而 hincrbyfloat 可以增加小數(shù)值。

說明:增量也可以為負(fù)數(shù),相當(dāng)于對(duì)給定域進(jìn)行減法操作。如果 key 不存在,一個(gè)新的哈希表被創(chuàng)建并執(zhí)行 HINCRBY 命令。如果域 field 不存在,那么在執(zhí)行命令前,域的值被初始化為 0。對(duì)一個(gè)儲(chǔ)存字符串值的域 field 執(zhí)行 HINCRBY 命令將造成一個(gè)錯(cuò)誤。

【Redis】Redis基礎(chǔ)命令集詳解

10、hkeys/hvals

格式:HKEYS key 或 HVALS key

功能:返回哈希表 key 中的所有域/值。

說明:當(dāng) key 不存在時(shí),返回一個(gè)空表。

【Redis】Redis基礎(chǔ)命令集詳解

11、hlen

格式:HLEN key

功能:返回哈希表 key 中域的數(shù)量。

說明:當(dāng) key 不存在時(shí),返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

12、hstrlen

格式:HSTRLEN key field

功能:返回哈希表 key 中, 與給定域 field 相關(guān)聯(lián)的值的字符串長(zhǎng)度(string length)。

說明:如果給定的鍵或者域不存在, 那么命令返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

13、應(yīng)用場(chǎng)景

Hash 型 Value 非常適合存儲(chǔ)對(duì)象數(shù)據(jù)。key 為對(duì)象名稱,value 為描述對(duì)象屬性的 Map,對(duì)對(duì)象屬性的修改在Redis 中就可直接完成。其不像String 型 Value 存儲(chǔ)對(duì)象,那個(gè)對(duì)象是序列化過的,例如序列化為 JSON 串,對(duì)對(duì)象屬性值的修改需要先反序列化為對(duì)象后再修改,修改后再序列化為JSON 串后寫入到 Redis。

五、List型Value操作命令

Redis 存儲(chǔ)數(shù)據(jù)的 Value 可以是一個(gè) String 列表類型數(shù)據(jù)。即該列表中的每個(gè)元素均為 String 類型數(shù)據(jù)。列表中的數(shù)據(jù)會(huì)按照插入順序進(jìn)行排序。不過,該列表的底層實(shí)際是一個(gè)無頭節(jié)點(diǎn)的雙向鏈表,所以對(duì)列表表頭與表尾的操作性能較高,但對(duì)中間元素的插入與刪除的操作的性能相對(duì)較差。

1、lpush/rpush

格式:LPUSH key value [value …] 或 RPUSH key value [value …]

功能:將一個(gè)或多個(gè)值 value 插入到列表 key 的表頭/表尾(表頭在左表尾在右)

說明:如果有多個(gè) value 值,對(duì)于 lpush 來說,各個(gè) value 會(huì)按從左到右的順序依次插入到表頭;對(duì)于 rpush 來說,各個(gè) value 會(huì)按從左到右的順序依次插入到表尾。如果 key不存在,一個(gè)空列表會(huì)被創(chuàng)建并執(zhí)行操作。當(dāng) key 存在但不是列表類型時(shí),返回一個(gè)錯(cuò)誤。執(zhí)行成功時(shí)返回列表的長(zhǎng)度。

【Redis】Redis基礎(chǔ)命令集詳解

2、llen

格式:LLEN key

功能:返回列表 key 的長(zhǎng)度。

說明:如果 key 不存在,則 key 被解釋為一個(gè)空列表,返回 0 。如果 key 不是列表類型,返回一個(gè)錯(cuò)誤。

【Redis】Redis基礎(chǔ)命令集詳解

3、lindex

格式:LINDEX key index

功能:返回列表 key 中,下標(biāo)為 index 的元素。列表從 0 開始計(jì)數(shù)。

說明:如果 index 參數(shù)的值不在列表的區(qū)間范圍內(nèi)(out of range),返回 nil 。

【Redis】Redis基礎(chǔ)命令集詳解

4、lset

格式:LSET key index value

功能:將列表 key 下標(biāo)為 index 的元素的值設(shè)置為 value 。

說明:當(dāng) index 參數(shù)超出范圍,或?qū)σ粋€(gè)空列表(key 不存在)進(jìn)行 LSET 時(shí),返回一個(gè)錯(cuò)誤。

【Redis】Redis基礎(chǔ)命令集詳解

5、lrange

格式:LRANGE key start stop

功能:返回列表 key 中指定區(qū)間[start, stop]內(nèi)的元素,即包含兩個(gè)端點(diǎn)。

說明:List 的下標(biāo)從 0 開始,即以 0 表示列表的第一個(gè)元素,以 1 表示列表的第二個(gè)元素,以此類推。也可以使用負(fù)數(shù)下標(biāo),以 -1 表示列表的最后一個(gè)元素, -2 表示列表的倒數(shù)第二個(gè)元素,以此類推。超出范圍的下標(biāo)值不會(huì)引起錯(cuò)誤。如果 start 下標(biāo)比列表的最大下標(biāo) 還要大,那么 LRANGE 返回一個(gè)空列表。如果 stop 下標(biāo)比最大下標(biāo)還要大,Redis 將 stop 的值設(shè)置為最大下標(biāo)。

【Redis】Redis基礎(chǔ)命令集詳解

6、lpushx/rpushx

格式:LPUSHX key value 或 RPUSHX key value

功能:將值 value 插入到列表 key 的表頭/表尾,當(dāng)且僅當(dāng) key 存在并且是一個(gè)列表。

說明:當(dāng) key 不存在時(shí),命令什么也不做。若執(zhí)行成功,則輸出表的長(zhǎng)度。

【Redis】Redis基礎(chǔ)命令集詳解

7、linsert

格式:LINSERT key BEFORE|AFTER pivot value

功能:將值 value 插入到列表 key 當(dāng)中,位于元素 pivot 之前或之后。

說明:當(dāng) pivot 元素不存在于列表中時(shí),不執(zhí)行任何操作,返回-1;當(dāng) key 不存在時(shí), key 被視為空列表,不執(zhí)行任何操作,返回 0;如果 key 不是列表類型,返回一個(gè)錯(cuò)誤;如果命令執(zhí)行成功,返回插入操作完成之后,列表的長(zhǎng)度。

【Redis】Redis基礎(chǔ)命令集詳解

8、lpop/rpop

格式:LPOP key [count] 或 RPOP key [count]

功能:從列表 key 的表頭/表尾移除 count 個(gè)元素,并返回移除的元素。count 默認(rèn)值 1

說明:當(dāng) key 不存在時(shí),返回 nil

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-uPdTzGAT-1681219408332)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230410200826128.png)]

9、blpop/brpop

格式:BLPOP key [key …] timeout 或 BRPOP key [key …] timeout

功能:BLPOP/BRPOP 是列表的阻塞式(blocking)彈出命令。它們是 LPOP/RPOP 命令的阻塞版本,當(dāng)給定列表內(nèi)沒有任何元素可供彈出的時(shí)候,連接將被 BLPOP/BRPOP 命令阻塞,直到等待 timeout 超時(shí)或發(fā)現(xiàn)可彈出元素為止。當(dāng)給定多個(gè) key 參數(shù)時(shí),按參數(shù) key的先后順序依次檢查各個(gè)列表,彈出第一個(gè)非空列表的頭元素。timeout 為阻塞時(shí)長(zhǎng),單位為秒,其值若為 0,則表示只要沒有可彈出元素,則一直阻塞。

說明:假如在指定時(shí)間內(nèi)沒有任何元素被彈出,則返回一個(gè) nil 和等待時(shí)長(zhǎng)。反之,返回一個(gè)含有兩個(gè)元素的列表,第一個(gè)元素是被彈出元素所屬的 key ,第二個(gè)元素是被彈出元素的值。

該指令詳細(xì)介紹:Redis每日一練(26):BLPOP和BRPOP命令 - 墨天輪 (modb.pro)

10、rpoplpush

格式:RPOPLPUSH source destination

功能:命令 RPOPLPUSH 在一個(gè)原子時(shí)間內(nèi),執(zhí)行以下兩個(gè)動(dòng)作:

  • 將列表 source 中的最后一個(gè)元素(尾元素)彈出,并返回給客戶端。
  • 將 source 彈出的元素插入到列表 destination ,作為 destination 列表的的頭元素。如果 source 不存在,值 nil 被返回,并且不執(zhí)行其他動(dòng)作。如果 source 和 destination 相同,則列表中的表尾元素被移動(dòng)到表頭,并返回該元素,可以把這種特殊情況視作列 表的旋轉(zhuǎn)(rotation)操作。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-GhNRwCLj-1681218054418)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230410201242354.png)]

11、brpoplpush

格式:BRPOPLPUSH source destination timeout

功能:BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本,當(dāng)給定列表 source 不為空時(shí), BRPOPLPUSH 的表現(xiàn)和 RPOPLPUSH 一樣。當(dāng)列表 source 為空時(shí), BRPOPLPUSH 命令將阻塞連接,直到等待超時(shí),或有另一個(gè)客戶端對(duì) source 執(zhí)行 LPUSH 或 RPUSH 命令為止。timeout 為阻塞時(shí)長(zhǎng),單位為秒,其值若為 0,則表示只要沒有可彈出元素,則一直阻塞。

說明:假如在指定時(shí)間內(nèi)沒有任何元素被彈出,則返回一個(gè) nil 和等待時(shí)長(zhǎng)。反之,返回一個(gè)含有兩個(gè)元素的列表,第一個(gè)元素是被彈出元素的值,第二個(gè)元素是等待時(shí)長(zhǎng)。

如圖:nums列表為空[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-fsjQiqNt-1681218054418)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230410201459060.png)]

12、lrem

格式:LREM key count value

功能:根據(jù)參數(shù) count 的值,移除列表中與參數(shù) value 相等的元素。count 的值可以是以下幾種:

  • count > 0 : 從表頭開始向表尾搜索,移除與 value 相等的元素,數(shù)量為 count 。
  • count < 0 : 從表尾開始向表頭搜索,移除與 value 相等的元素,數(shù)量為 count 的絕對(duì)值。
  • count = 0 : 移除表中所有與 value 相等的值。

說明:返回被移除元素的數(shù)量。當(dāng) key 不存在時(shí), LREM 命令返回 0 ,因?yàn)椴淮嬖诘?key 被視作空表(empty list)。

圖中l(wèi)ls列表不存在:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-i1kldKKZ-1681218054419)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230410202033415.png)]

13、ltrim

格式:LTRIM key start stop

功能:對(duì)一個(gè)列表進(jìn)行修剪(trim),就是說,讓列表只保留指定區(qū)間內(nèi)的元素,不在指定區(qū)間之內(nèi)的元素都將被刪除。

說明:下標(biāo)(index)參數(shù) start 和 stop 都以 0 為底,也就是說,以 0 表示列表的第一個(gè)元素,以 1 表示列表的第二個(gè)元素,以此類推。也可以使用負(fù)數(shù)下標(biāo),以 -1 表示列表的最后一個(gè)元素, -2 表示列表的倒數(shù)第二個(gè)元素,以此類推。當(dāng) key 不是列表類型時(shí),返回一個(gè)錯(cuò)誤。如果 start 下標(biāo)比列表的最大下標(biāo) end ( LLEN list 減去 1 )還要大,或者 start > stop , LTRIM 返回一個(gè)空列表,因?yàn)?LTRIM 已經(jīng)將整個(gè)列表清空。如果 stop 下標(biāo)比 end 下標(biāo)還要大,Redis 將 stop 的值設(shè)置為 end 。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ux6oXHR2-1681218054419)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230410202145481.png)]

14、應(yīng)用場(chǎng)景

? Value 為 List 類型的應(yīng)用場(chǎng)景很多,主要是通過構(gòu)建不同的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)功能。這里僅對(duì)這些數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)方式進(jìn)行總結(jié),不舉具體的例子。

(1)棧

? 通過 lpush + lpop 可以實(shí)現(xiàn)棧數(shù)據(jù)結(jié)構(gòu)效果:先進(jìn)后出。通過 lpush 從列表左側(cè)插入數(shù)據(jù),通過 lpop 從列表左側(cè)取出數(shù)據(jù)。當(dāng)然,通過 rpush + rpop 也可以實(shí)現(xiàn)相同效果,只不過操作的是列表右側(cè)。

(2)隊(duì)列

? 通過 lpush + rpop 可以實(shí)現(xiàn)隊(duì)列數(shù)據(jù)結(jié)構(gòu)效果:先進(jìn)先出。通過 lpush 從列表左側(cè)插入數(shù)據(jù),通過 rpop 從列表右側(cè)取出數(shù)據(jù)。當(dāng)然,通過 rpush + lpop 也可以實(shí)現(xiàn)相同效果,只不過操作的方向正好相反。

(3)阻塞式消息隊(duì)列

? 通過 lpush + brpop 可以實(shí)現(xiàn)阻塞式消息隊(duì)列效果。作為消息生產(chǎn)者的客戶端使用 lpush從列表左側(cè)插入數(shù)據(jù),作為消息消費(fèi)者的多個(gè)客戶端使用 brpop 阻塞式“搶占”列表尾部數(shù)據(jù)進(jìn)行消費(fèi),保證了消費(fèi)的負(fù)載均衡與高可用性。brpop 的 timeout 設(shè)置為 0,表示只要沒有數(shù)據(jù)可彈出,就永久阻塞。

(4)動(dòng)態(tài)有限集合

? 通過 lpush + ltrim 可以實(shí)現(xiàn)有限集合。通過lpush 從列表左側(cè)向列表中添加數(shù)據(jù),通過 ltrim 保持集合的動(dòng)態(tài)有限性。像企業(yè)的末位淘汰、學(xué)校的重點(diǎn)班等動(dòng)態(tài)管理,都可通過這種動(dòng)態(tài)有限集合來實(shí)現(xiàn)。當(dāng)然,通過rpush + ltrim 也可以實(shí)現(xiàn)相同效果,只不過操作的方向正好相反。

六、Set型Value操作命令

Redis 存儲(chǔ)數(shù)據(jù)的 Value 可以是一個(gè) Set 集合,且集合中的每一個(gè)元素均 String 類型。Set與 List 非常相似,但不同之處是 Set 中的元素具有無序性與不可重復(fù)性,而 List 則具有有序性與可重復(fù)性。

Redis 中的 Set 集合與 Java 中的 Set 集合的實(shí)現(xiàn)相似,其底層都是value 為 null 的 hash表。也正因?yàn)榇?,才?huì)引發(fā)無序性與不可重復(fù)性。

1、sadd

格式:SADD key member [member …]

功能:將一個(gè)或多個(gè) member 元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 member

元素將被忽略。

說明:假如 key 不存在,則創(chuàng)建一個(gè)只包含 member 元素作成員的集合。當(dāng) key 不是集合類型時(shí),返回一個(gè)錯(cuò)誤。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-HZ9aKIX8-1681218054420)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411192311511.png)]

2、smembers

格式:SMEMBERS key

功能:返回集合 key 中的所有成員。

說明:不存在的 key 被視為空集合。若 key 中包含大量元素,則該命令可能會(huì)阻塞 Redis服務(wù)。所以生產(chǎn)環(huán)境中一般不使用該命令,而使用 sscan 命令代替。

【Redis】Redis基礎(chǔ)命令集詳解

3、scard

格式:SCARD key

功能:返回 Set 集合的長(zhǎng)度

說明:當(dāng) key 不存在時(shí),返回 0 。

【Redis】Redis基礎(chǔ)命令集詳解

4、sismember

格式:SISMEMBER key member

功能:判斷 member 元素是否集合 key 的成員。

說明:如果 member 元素是集合的成員,返回 1 。如果 member 元素不是集合的成員,或 key 不存在,返回 0 。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-By00Kd5B-1681218054422)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411192658608.png)]

5、smove

格式:SMOVE source destination member

功能:將 member 元素從 source 集合移動(dòng)到 destination 集合。

說明:如果 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執(zhí)行任何操作,僅返回 0 。否則, member 元素從 source 集合中被移除,并添加到 destination 集合中去,返回 1。當(dāng) destination 集合已經(jīng)包含 member 元素時(shí), SMOVE命令只是簡(jiǎn)單地將 source 集合中的 member 元素刪除。當(dāng) source 或 destination 不是集合類型時(shí),返回一個(gè)錯(cuò)誤。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-HeIqQuCP-1681218054422)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411192802656.png)]

6、srem

格式:SREM key member [member …]

功能:移除集合 key 中的一個(gè)或多個(gè) member 元素,不存在的 member 元素會(huì)被忽略,且返回成功移除的元素個(gè)數(shù)。

說明:當(dāng) key 不是集合類型,返回一個(gè)錯(cuò)誤。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-tzXDyhRW-1681218054423)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411192926406.png)]

7、srandmember

格式:SRANDMEMBER key [count]

功能:返回集合中的 count 個(gè)隨機(jī)元素。count 默認(rèn)值為 1。

說明:若 count 為正數(shù),且小于集合長(zhǎng)度,那么返回一個(gè)包含 count 個(gè)元素的數(shù)組,數(shù)組中的元素各不相同。如果 count 大于等于集合長(zhǎng)度,那么返回整個(gè)集合。如果count 為負(fù)數(shù),那么返回一個(gè)包含 count 絕對(duì)值個(gè)元素的數(shù)組,但數(shù)組中的元素可能會(huì)出現(xiàn)重復(fù)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-fgiGBRJ3-1681218054423)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411193102935.png)]

8、spop

格式:SPOP key [count]

功能:移除并返回集合中的 count 個(gè)隨機(jī)元素。count 必須為正數(shù),且默認(rèn)值為 1。

說明:如果 count 大于等于集合長(zhǎng)度,那么移除并返回整個(gè)集合。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-5OJ7lWtL-1681218054424)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411193320299.png)]

9、sdiff/sdiffstore

格式:SDIFF key [key …] 或 SDIFFSTORE destination key [key …]

功能:返回第一個(gè)集合與其它集合之間的差集。差集,difference。

說明:這兩個(gè)命令的不同之處在于,sdiffstore 不僅能夠顯示差集,還能將差集存儲(chǔ)到指定的集合 destination 中。如果 destination 集合已經(jīng)存在,則將其覆蓋。不存在的 key 被視為空集。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-sH710fKh-1681218054425)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411193446264.png)]

10、sinter / sinterstore

格式:SINTER key [key …] 或 SINTERSTORE destination key [key …]

功能:返回多個(gè)集合間的交集。交集,intersection。

說明:這兩個(gè)命令的不同之處在于,sinterstore 不僅能夠顯示交集,還能將交集存儲(chǔ)到指定的集合 destination 中。如果 destination 集合已經(jīng)存在,則將其覆蓋。不存在的 key被視為空集。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-aW2vfO9Z-1681218054425)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411193629443.png)]

11、sunion/sunionstore

格式:SUNION key [key …] 或 SUNIONSTORE destination key [key …]

功能:返回多個(gè)集合間的并集。并集,union。

說明:這兩個(gè)命令的不同之處在于,sunionstore 不僅能夠顯示并集,還能將并集存儲(chǔ)到指定的集合 destination 中。如果 destination 集合已經(jīng)存在,則將其覆蓋。不存在的 key被視為空集。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-OuJUo2Qc-1681218054426)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411193825086.png)]

12、應(yīng)用場(chǎng)景
(1)動(dòng)態(tài)黑名單

例如某服務(wù)器中要設(shè)置用于訪問控制的黑名單。如果直接將黑名單寫入服務(wù)器的配置文件,那么存在的問題是,無法動(dòng)態(tài)修改黑名單。此時(shí)可以將黑名單直接寫入Redis,只要有客戶端來訪問服務(wù)器,服務(wù)器在獲取到客戶端IP 后先從Redis 的黑名單中查看是否存在該IP,如果存在,則拒絕訪問,否則訪問通過。

(2)有限隨機(jī)數(shù)

有限隨機(jī)數(shù)是指返回的隨機(jī)數(shù)是基于某一集合范圍內(nèi)的隨機(jī)數(shù),例如抽獎(jiǎng)、隨機(jī)選人。通過 spop 或 srandmember 可以實(shí)現(xiàn)從指定集合中隨機(jī)選出元素。

(3)用戶畫像

社交平臺(tái)、電商平臺(tái)等各種需要用戶注冊(cè)登錄的平臺(tái),會(huì)根據(jù)用戶提供的資料與用戶使用習(xí)慣,為每個(gè)用戶進(jìn)行畫像,即為每個(gè)用戶定義很多可以反映該用戶特征的標(biāo)簽,這些標(biāo)簽就可以使用sadd 添加到該用戶對(duì)應(yīng)的集合中。這些標(biāo)簽具有無序、不重復(fù)特征。

同時(shí)平臺(tái)還可以使用 sinter/sinterstore 根據(jù)用戶畫像間的交集進(jìn)行好友推薦、商品推薦、客戶推薦等。

七、有序Set型Value操作命令

Redis 存儲(chǔ)數(shù)據(jù)的Value 可以是一個(gè)有序Set,這個(gè)有序 Set 中的每個(gè)元素均String 類型。有序 Set 與 Set 的不同之處是,有序 Set 中的每一個(gè)元素都有一個(gè)分值 score,Redis 會(huì)根據(jù) score 的值對(duì)集合進(jìn)行由小到大的排序。其與 Set 集合要求相同,元素不能重復(fù),但元素的 score 可以重復(fù)。由于該類型的所有命令均是字母z 開頭,所以該 Set 也稱為 ZSet。

1、zadd

格式:ZADD key score member [[score member] [score member] …]

功能:將一個(gè)或多個(gè) member 元素及其 score 值加入到有序集 key 中的適當(dāng)位置。

說明:score 值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。如果 key 不存在,則創(chuàng)建一個(gè)空的有序集并執(zhí)行 ZADD 操作。當(dāng) key 存在但不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。如果命令執(zhí)行成功,則返回被成功添加的新成員的數(shù)量,不包括那些被更新的、已經(jīng)存在的成員。若寫入的 member 值已經(jīng)存在,但score 值不同,則新的 score 值將覆蓋老 score。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6uazNJpi-1681218054426)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411194528792.png)]

2、zrange/zrevrange

格式:ZRANGE key start stop [WITHSCORES] 或 ZREVRANGE key start stop [WITHSCORES]

功能:返回有序集 key 中,指定區(qū)間內(nèi)的成員。zrange 命令會(huì)按 score 值遞增排序, zrevrange 命令會(huì)按score 遞減排序。具有相同 score 值的成員按字典序/逆字典序排列??梢酝ㄟ^使用 WITHSCORES 選項(xiàng),來讓成員和它的 score 值一并返回。

說明:下標(biāo)參數(shù)從 0 開始,即 0 表示有序集第一個(gè)成員,以 1 表示有序集第二個(gè)成員,以此類推。也可以使用負(fù)數(shù)下標(biāo),-1 表示最后一個(gè)成員,-2 表示倒數(shù)第二個(gè)成員,以此類推。超出范圍的下標(biāo)并不會(huì)引起錯(cuò)誤。例如,當(dāng) start 的值比有序集的最大下標(biāo)還要大,或是 start > stop 時(shí), ZRANGE 命令只是簡(jiǎn)單地返回一個(gè)空列表。再比如 stop 參數(shù)的值比有序集的最大下標(biāo)還要大,那么 Redis 將 stop 當(dāng)作最大下標(biāo)來處理。

若 key 中指定范圍內(nèi)包含大量元素,則該命令可能會(huì)阻塞 Redis 服務(wù)。所以生產(chǎn)環(huán)境中如果要查詢有序集合中的所有元素,一般不使用該命令,而使用 zscan 命令代替。

【Redis】Redis基礎(chǔ)命令集詳解

3、zrangebyscore/zrevrangebyscore

格式:ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

功能:返回有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或 max )的成員。有序集成員按 score 值遞增/遞減次序排列。具有相同 score 值的成員按字典序/逆字典序排列。可選的 LIMIT 參數(shù)指定返回結(jié)果的數(shù)量及區(qū)間(就像 SQL 中的 SELECT LIMIT offset, count ),注意當(dāng) offset 很大時(shí),定位 offset 的操作可能需要遍歷整個(gè)有序集,此過程效率可能會(huì)較低??蛇x的 WITHSCORES 參數(shù)決定結(jié)果集是單單返回有序集的成員,還是將有序集成員及其 score 值一起返回。

說明:min 和 max 的取值是正負(fù)無窮大的。默認(rèn)情況下,區(qū)間的取值使用閉區(qū)間 (小于等于或大于等于),也可以通過給參數(shù)前增加左括號(hào)“(”來使用可選的開區(qū)間 (小于或大于)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6u0RbrYt-1681218054427)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195027560.png)]

4、zcard

格式:ZCARD key

功能:返回集合的長(zhǎng)度

說明:當(dāng) key 不存在時(shí),返回 0 。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-cfDiABPs-1681218054428)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195150576.png)]

5、zcount

格式:ZCOUNT key min max

功能:返回有序集 key 中, score 值在 min 和 max 之間(默認(rèn)包括 score 值等于 min或 max )的成員的數(shù)量。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-jJbynJKT-1681218054429)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195252304.png)]

6、zscore

格式:ZSCORE key member

功能:返回有序集 key 中,成員 member 的 score 值。

說明:如果 member 元素不是有序集 key 的成員,或 key 不存在,返回 nil 。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-VZ1nmMwt-1681218054429)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195405826.png)]

7、zincrby

格式:ZINCRBY key increment member

功能:為有序集 key 的成員 member 的 score 值加上增量 increment 。increment 值可以是整數(shù)值或雙精度浮點(diǎn)數(shù)。

說明:可以通過傳遞一個(gè)負(fù)數(shù)值 increment ,讓 score 減去相應(yīng)的值。當(dāng) key 不存在,或 member 不是 key 的成員時(shí), ZINCRBY key increment member 等同于 ZADD key increment member 。當(dāng) key 不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。命令執(zhí)行成功,則返回 member 成員的新 score 值。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-j9kPl1xO-1681218054430)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195539936.png)]

8、zrank/zrevrank

格式:ZRANK key member 或 ZREVRANK key member

功能:返回有序集 key 中成員 member 的排名。zrank 命令會(huì)按 score 值遞增排序,zrevrank 命令會(huì)按 score 遞減排序。

說明:score 值最小的成員排名為 0 。如果 member 不是有序集 key 的成員,返回 nil 。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-P5KtHLr8-1681218054430)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195712685.png)]

9、zrem

格式:ZREM key member [member …]

功能:移除有序集 key 中的一個(gè)或多個(gè)成員,不存在的成員將被忽略。

說明:當(dāng) key 存在但不是有序集類型時(shí),返回一個(gè)錯(cuò)誤。執(zhí)行成功,則返回被成功移除的成員的數(shù)量,不包括被忽略的成員。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-j3z0muca-1681218054431)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411195847811.png)]

10、zremrangebyrank

格式:ZREMRANGEBYRANK key start stop

功能:移除有序集 key 中,指定排名(rank)區(qū)間內(nèi)的所有成員。

說明:排名區(qū)間分別以下標(biāo)參數(shù) start 和 stop 指出,包含 start 和 stop 在內(nèi)。排名區(qū)間參數(shù)從 0 開始,即 0 表示排名第一的成員, 1 表示排名第二的成員,以此類推。也可以使用負(fù)數(shù)表示,-1 表示最后一個(gè)成員,-2 表示倒數(shù)第二個(gè)成員,以此類推。命令執(zhí)行成功,則返回被移除成員的數(shù)量。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Au1pv6wx-1681218054431)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411200011252.png)]

11、zremrangebyscore

格式:ZREMRANGEBYSCORE key min max

功能:移除有序集 key 中,所有 score 值介于 min 和 max 之間(包括等于 min 或max )的成員。

說明:命令執(zhí)行成功,則返回被移除成員的數(shù)量。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-4T9UPuU8-1681218054432)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411200151552.png)]

12、zrangebylex

格式:ZRANGEBYLEX key min max [LIMIT offset count]

功能:該命令僅適用于集合中所有成員都具有相同分值的情況。當(dāng)有序集合的所有成員都具有相同的分值時(shí),有序集合的元素會(huì)根據(jù)成員的字典序(lexicographical ordering)來進(jìn)行排序。即這個(gè)命令返回給定集合中元素值介于 min 和 max 之間的成員。如果有序集合里面的成員帶有不同的分值, 那么命令的執(zhí)行結(jié)果與 zrange key 效果相同。

說明:合法的 min 和 max 參數(shù)必須包含左小括號(hào)“(”或左中括號(hào)“[”,其中左小括號(hào)“(”表示開區(qū)間, 而左中括號(hào)“[”則表示閉區(qū)間。min 或max 也可使用特殊字符“+”和“-”,分別表示正無窮大與負(fù)無窮大。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-EPjONsTS-1681218054432)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411205145970.png)]

13、zlexcount

格式:ZLEXCOUNT key min max

功能:該命令僅適用于集合中所有成員都具有相同分值的情況。該命令返回該集合中元素值本身(而非score 值)介于 min 和 max 范圍內(nèi)的元素?cái)?shù)量。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-8R7cihDj-1681218054433)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411205406092.png)]

14、zremrangebylex

格式:ZREMRANGEBYLEX key min max

功能:該命令僅適用于集合中所有成員都具有相同分值的情況。該命令會(huì)移除該集合中元素值本身介于 min 和 max 范圍內(nèi)的所有元素。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-IGF4CIPP-1681219975326)(https://typora-1259159092.cos.ap-nanjing.myqcloud.com/typora/image-20230411205517353.png)]

15、應(yīng)用場(chǎng)景

有序 Set 最為典型的應(yīng)用場(chǎng)景就是排行榜,例如音樂、視頻平臺(tái)中根據(jù)播放量進(jìn)行排序的排行榜;電商平臺(tái)根據(jù)用戶評(píng)價(jià)或銷售量進(jìn)行排序的排行榜等。將播放量作為 score,將作品 id 作為 member,將用戶評(píng)價(jià)積分或銷售量作為 score,將商家 id 作為member。使用 zincrby 增加排序 score,使用 zrevrange 獲取 Top 前幾名,使用 zrevrank 查詢當(dāng)前排名,使用 zscore 查詢當(dāng)前排序score 等。文章來源地址http://www.zghlxwxcb.cn/news/detail-417006.html

到了這里,關(guān)于【Redis】Redis基礎(chǔ)命令集詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • window系統(tǒng)下操作nginx常用命令集

    我的在C盤下就需要先輸入D:切換到D盤,再輸入cd Toolsnginx-1.23.3切換到nginx的目錄下? 1、啟動(dòng): 2、停止: 3、重新載入Nginx: 4、重新打開日志文件: 5、查看Nginx版本: 6、徹底停用? 也叫做結(jié)束所有nginx進(jìn)程 ?

    2024年02月14日
    瀏覽(24)
  • Dockerfile命令集

    1.1 Dockerfile 1.2 docker build命令 1.3 Dockerfile相關(guān)指令描述 保留字 作用 FROM 當(dāng)前鏡像是基于哪個(gè)鏡像[第一個(gè)指定必須是FROM] MANITAINER 維護(hù)者的姓名和郵箱地址[廢棄,意義不大] RUN 構(gòu)建鏡像是需要運(yùn)行的指令 EXPOSE 當(dāng)前容器對(duì)外 暴露的端口號(hào) WORKDIR 指定在創(chuàng)建容器后,終端默認(rèn)登錄

    2024年02月07日
    瀏覽(22)
  • adb 命令集

    adb 查看app啟動(dòng)時(shí)間 1.清除時(shí)間 2.啟動(dòng)應(yīng)用并記錄 TotalTime: 491 adb 查看分辨率、dpi 分辨率 Physical size: 1080x2340 dpi: Physical density: 480 adb 捕獲logcat pushpull 文件 push e盤文件到sdcard pull sdcard文件到e盤 adb 截屏 批量安裝apk

    2024年02月07日
    瀏覽(26)
  • HCIA配置命令集

    HCIA配置命令集

    目錄 擴(kuò)展 交換機(jī) 路由器 路由器網(wǎng)關(guān)配置 DHCP服務(wù)器 Telnet?? :遠(yuǎn)程登錄協(xié)議 ? ? 靜態(tài)路由配置 ? ? 動(dòng)態(tài)路由 OSPF RIP NAT—網(wǎng)絡(luò)地址轉(zhuǎn)換 ACL—訪問控制列表 ACL的分類: 配置 配置基礎(chǔ)ACL?? : 例一: 例二: 配置高級(jí)ACL?? : 例一: 例二: Huaweisave 一保存配置 Huaweireset??s

    2024年02月16日
    瀏覽(16)
  • 數(shù)據(jù)庫命令集

    1、創(chuàng)建數(shù)據(jù)庫 語法格式: CREATE DATABASE 數(shù)據(jù)庫名; 1.1、創(chuàng)建數(shù)據(jù)庫,并指定字符集和校對(duì)規(guī)則 語法格式: CREATE DATABASE 數(shù)據(jù)庫名 DEFAULT CHAARACTER 字符集 COLLATE 校對(duì)規(guī)則; 1.2、進(jìn)入到指定數(shù)據(jù)庫中 語法格式: USE 數(shù)據(jù)庫名; 1.3、修改數(shù)據(jù)庫默認(rèn)字符集和校對(duì)規(guī)則 語法格式: ALTE

    2024年01月23日
    瀏覽(22)
  • FFmpeg的一些命令集

    獲取視頻的信息 ffmpeg -i video.avi 將圖片序列合成視頻 ffmpeg -f image2 -i image%d.jpg video.mpg 上面的命令會(huì)把當(dāng)前目錄下的圖片(名字如:image1.jpg. image2.jpg. 等…)合并成 video.mpg 將視頻分解成圖片序列 ffmpeg -i video.mpg image%d.jpg 上面的命令會(huì)生成 image1.jpg. image2.jpg. … 支持的圖片格式

    2024年02月12日
    瀏覽(20)
  • 簡(jiǎn)單整理FFmpeg相關(guān)命令集

    簡(jiǎn)單整理FFmpeg相關(guān)命令集

    簡(jiǎn)單整理了FFmpeg相關(guān)命令,主要包括ffplay播放控制和媒體播放命令、ffmpeg命令相關(guān)參數(shù)以及常用的提取音視頻等命令。 FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻、視頻,并能將其轉(zhuǎn)化為流的開源計(jì)算機(jī)程序。采用LGPL或GPL許可證。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解

    2024年01月16日
    瀏覽(24)
  • npm yarn pnpm 命令集

    安裝依賴 安裝某個(gè)依賴 安裝到全局(dependencies) 安裝到線下(devDependencies) 卸載某個(gè)依賴 卸載全局依賴 清除npm緩存 如果清除緩存報(bào)禁止--force錯(cuò)誤 可以使用以下這條 安裝pnpm 打開CMD命令行 輸入 查看版本號(hào) 安裝依賴 安裝某個(gè)依賴 刪除某個(gè)依賴 更新所有依賴 更新某個(gè)依賴

    2024年02月12日
    瀏覽(43)
  • Linux命令集(Linux文件管理命令--rm指令篇)

    如下為筆者總結(jié)出在 linux 中最常用的 rm 指令集 ??希望能夠幫助正在Linux路上奮斗的你?? 刪除文件或目錄 短選項(xiàng) 長(zhǎng)選項(xiàng) 描述 -f --force 忽略不存在的文件,不給出提示 -i --interactive 進(jìn)行交互式刪除操作,刪除前逐一詢問確認(rèn) -r --recursive 將指定目錄及其子目錄遞歸刪除 -v --

    2024年02月01日
    瀏覽(20)
  • Linux命令集(Linux文件管理命令--rmdir指令篇)

    如下為筆者總結(jié)出在 linux 中最常用的 rmdir 指令集 ??希望能夠幫助正在Linux路上奮斗的你?? 刪除空目錄 短選項(xiàng) 長(zhǎng)選項(xiàng) 描述 -p --parents 遞歸刪除父目錄中不包含子目錄或文件的空目錄,同時(shí)刪除父目錄 -v --verbose 顯示當(dāng)前刪除目錄 -- --ignore-fail-on-non-empty 忽略非空目錄刪除失敗

    2024年02月02日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包