共計 2108 個字符,預(yù)計需要花費 6 分鐘才能閱讀完成。
這篇文章主要為大家展示了“redis 如何使用 scan 指令代替 keys 指令”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“redis 如何使用 scan 指令代替 keys 指令”這篇文章吧。
SCAN cursor [MATCH pattern] [COUNT count]
SCAN 命令及其相關(guān)的 SSCAN 命令、HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):
SCAN 命令用于迭代當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)庫鍵。
SSCAN 命令用于迭代集合鍵中的元素。
HSCAN 命令用于迭代哈希鍵中的鍵值對。
ZSCAN 命令用于迭代有序集合中的元素(包括元素成員和元素分值)。
以上列出的四個命令都支持增量式迭代,它們每次執(zhí)行都只會返回少量元素,所以這些命令可以用于生產(chǎn)環(huán)境,而不會出現(xiàn)像 KEYS 命令、SMEMBERS 命令帶來的問題 —— 當(dāng) KEYS 命令被用于處理一個大的數(shù)據(jù)庫時,又或者 SMEMBERS 命令被用于處理一個大的集合鍵時,它們可能會阻塞服務(wù)器達(dá)數(shù)秒之久。
不過,增量式迭代命令也不是沒有缺點的:舉個例子,使用 SMEMBERS 命令可以返回集合鍵當(dāng)前包含的所有元素,但是對于 SCAN 這類增量式迭代命令來說,因為在對鍵進(jìn)行增量式迭代的過程中,鍵可能會被修改,所以增量式迭代命令只能對被返回的元素提供有限的保證(offer limited guarantees about the returned elements)。
因為 SCAN、SSCAN、HSCAN 和 ZSCAN 四個命令的工作方式都非常相似,所以這個文檔會一并介紹這四個命令,但是要記住:
SSCAN 命令、HSCAN 命令和 ZSCAN 命令的第一個參數(shù)總是一個數(shù)據(jù)庫鍵。
而 SCAN 命令則不需要在第一個參數(shù)提供任何數(shù)據(jù)庫鍵 —— 因為它迭代的是當(dāng)前數(shù)據(jù)庫中的所有數(shù)據(jù)庫鍵。
scan 0 默認(rèn)返回 10 條數(shù)據(jù)。
127.0.0.1:6379 scan 0
1) 81920
2) 1) CMD:1000004739:4
2) CMD:1000010475:2
3) CMD:380071400001208:766
4) CMD:1000006866:LIST
5) CMD:380071400001208:20415
6) CMD:380071400001231:21530
7) CMD:380071400001208:21780
8) CMD:7485630165:LIST
9) CMD:1000001545:2
10) CMD:380071400001231:4387
可以用 count 參數(shù)指定返回數(shù)據(jù)量:
127.0.0.1:6379 scan 0 count 100
1) 104448
2) 1) CMD:1000004739:4
2) CMD:1000010475:2
3) CMD:380071400001208:766
4) CMD:1000006866:LIST
5) CMD:380071400001208:20415
6) CMD:380071400001231:21530
7) CMD:380071400001208:21780
8) CMD:7485630165:LIST
9) CMD:1000001545:2
10) CMD:380071400001231:4387
……
94) CMD:201610200062:6
95) CMD:VF3748211006:3
96) CMD:1000009121:4
97) CMD:380071400001231:6563
98) CMD:1000010252:ID
99) CMD:1000005261:5
100) SERVER:45568_0
使用 match 參數(shù)來匹配模式:
127.0.0.1:6379 scan 0 match CMD* count 100
1) 104448
2) 1) CMD:1000004739:4
2) CMD:1000010475:2
3) CMD:380071400001208:766
4) CMD:1000006866:LIST
5) CMD:380071400001208:20415
6) CMD:380071400001231:21530
7) CMD:380071400001208:21780
8) CMD:7485630165:LIST
9) CMD:1000001545:2
10) CMD:380071400001231:4387
……
86) CMD:201610200062:6
87) CMD:VF3748211006:3
88) CMD:1000009121:4
89) CMD:380071400001231:6563
90) CMD:1000010252:ID
91) CMD:1000005261:5
最重要的是 scan 不會阻塞服務(wù)器,現(xiàn)網(wǎng)環(huán)境也可以用,真方便。
以上是“redis 如何使用 scan 指令代替 keys 指令”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!