国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Redis > 正文

redis 用scan指令 代替keys指令(詳解)

2020-10-28 21:34:50
字體:
來源:轉載
供稿:網(wǎng)友

眾所周知,當redis中key數(shù)量越大,keys 命令執(zhí)行越慢,而且最重要的會阻塞服務器,對單線程的redis來說,簡直是災難,終于找到了替代命令scan。  

SCAN cursor [MATCH pattern] [COUNT count]

SCAN 命令及其相關的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements):

SCAN 命令用于迭代當前數(shù)據(jù)庫中的數(shù)據(jù)庫鍵。

SSCAN 命令用于迭代集合鍵中的元素。

HSCAN 命令用于迭代哈希鍵中的鍵值對。

ZSCAN 命令用于迭代有序集合中的元素(包括元素成員和元素分值)。

以上列出的四個命令都支持增量式迭代, 它們每次執(zhí)行都只會返回少量元素, 所以這些命令可以用于生產環(huán)境, 而不會出現(xiàn)像 KEYS命令、 SMEMBERS 命令帶來的問題 ―― 當 KEYS 命令被用于處理一個大的數(shù)據(jù)庫時, 又或者 SMEMBERS 命令被用于處理一個大的集合鍵時, 它們可能會阻塞服務器達數(shù)秒之久。

不過, 增量式迭代命令也不是沒有缺點的: 舉個例子, 使用 SMEMBERS 命令可以返回集合鍵當前包含的所有元素, 但是對于 SCAN 這類增量式迭代命令來說, 因為在對鍵進行增量式迭代的過程中, 鍵可能會被修改, 所以增量式迭代命令只能對被返回的元素提供有限的保證 (offer limited guarantees about the returned elements)。

因為 SCAN 、 SSCAN 、 HSCAN 和 ZSCAN 四個命令的工作方式都非常相似, 所以這個文檔會一并介紹這四個命令, 但是要記住:

SSCAN 命令、 HSCAN 命令和 ZSCAN 命令的第一個參數(shù)總是一個數(shù)據(jù)庫鍵。

而 SCAN 命令則不需要在第一個參數(shù)提供任何數(shù)據(jù)庫鍵 ―― 因為它迭代的是當前數(shù)據(jù)庫中的所有數(shù)據(jù)庫鍵。

scan 0 默認返回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不會阻塞服務器,現(xiàn)網(wǎng)環(huán)境也可以用,真方便。

以上這篇redis 用scan指令 代替keys指令(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 中江县| 鲁甸县| 抚远县| 凤冈县| 凤庆县| 永康市| 城固县| 长泰县| 陵水| 宁阳县| 武隆县| 论坛| 土默特左旗| 长阳| 牙克石市| 栾川县| 商水县| 柘荣县| 通榆县| 通河县| 巍山| 莆田市| 和静县| 阳山县| 鄂尔多斯市| 阿尔山市| 思南县| 当雄县| 阿拉善盟| 邹平县| 武宣县| 罗城| 木里| 洪洞县| 雅江县| 灵石县| 白山市| 马边| 方山县| 蒙阴县| 咸丰县|