redis SCAN使用

SCAN命令是一個基于游標(biāo)的迭代器。這意味著命令每次被調(diào)用都需要使用上一次這個調(diào)用返回的游標(biāo)作為該次調(diào)用的游標(biāo)參數(shù),以此來延續(xù)之前的迭代過程

當(dāng)SCAN命令的游標(biāo)參數(shù)被設(shè)置為 0 時, 服務(wù)器將開始一次新的迭代, 而當(dāng)服務(wù)器向用戶返回值為 0 的游標(biāo)時, 表示迭代已結(jié)束。

也就是說scan 0 是一次全新的查詢,直到返回的游標(biāo)值是0時,才表示整個庫的查詢結(jié)束。

比如:

redis 127.0.0.1:6379> scan 0

1) "17"

2)  1) "key:12"

    2) "key:8"

    3) "key:4"

    4) "key:14"

    5) "key:16"

    6) "key:17"

    7) "key:15"

    8) "key:10"

    9) "key:3"

    10) "key:7"

    11) "key:1"

redis 127.0.0.1:6379> scan 17

1) "0"

2) 1) "key:5"

   2) "key:18"

   3) "key:0"

   4) "key:2"

   5) "key:19"

   6) "key:13"

   7) "key:6"

   8) "key:9"

   9) "key:11"

在上面這個例子中, 第一次迭代使用 0 作為游標(biāo), 表示開始一次新的迭代。
第二次迭代使用的是第一次迭代時返回的游標(biāo), 也即是命令回復(fù)第一個元素的值 —— 17 。

從上面的示例可以看到, SCAN 命令的回復(fù)是一個包含兩個元素的數(shù)組, 第一個數(shù)組元素是用于進(jìn)行下一次迭代的新游標(biāo), 而第二個數(shù)組元素則是一個數(shù)組, 這個數(shù)組中包含了所有被迭代的元素。
在第二次調(diào)用 SCAN 命令時, 命令返回了游標(biāo) 0 , 這表示迭代已經(jīng)結(jié)束, 整個數(shù)據(jù)集(collection)已經(jīng)被完整遍歷過了。
以 0 作為游標(biāo)開始一次新的迭代, 一直調(diào)用 SCAN 命令, 直到命令返回游標(biāo) 0 , 我們稱這個過程為一次完整遍歷(full iteration)。

所以可以通過這個方法來查詢庫大的整個庫的key,如果庫小的話直接keys *搞定

可以使用下面的腳本來得到結(jié)果

#!/bin/bash

redis-cli -h 127.0.0.1 -p 6379 scan 0 > keys.txt

a=`head -1 keys.txt`

while [ $a -ne 0 ]

do

        redis-cli -h 127.0.0.1 -p 6379 scan $a > key.txt

        redis-cli -h 127.0.0.1 -p 6379 scan $a >> keys.txt

        a=`head -1 key.txt`

        sleep 1

done

如果指定庫的話改為 redis-cli -h 127.0.0.1 -p 6379 -n 1 scan 0 > keys.txt

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第八章 數(shù)據(jù)查詢和選擇 ||| 第十章 獲取GIS數(shù)據(jù)列表和描述信息 我們將在本章中介紹以下幾個案例: 游標(biāo)對象(...
    muyan閱讀 21,919評論 5 21
  • UILabel如果讓文本自適應(yīng)經(jīng)常遇到,UILabel里面的顯示區(qū)域固定, 但是里面的文字顯示合適的字體大小的...
    喜歡就可以閱讀 338評論 0 0
  • 保持善心,和大自然和諧共處
    金吉善子閱讀 135評論 0 0
  • 5.想兩個你自己產(chǎn)生"我的更好"思維的例子。描述一下那種思維,以及你最初意識到它的方式。如果可以的話,找出是什么導(dǎo)...
    sxrunn閱讀 200評論 0 0
  • 在朋友安排下,今天很高興參觀廣汽豐田工廠,這是我頭一次參觀汽車工廠,又聽到專業(yè)的介紹,很開心。豐田的生產(chǎn)管理令人嘆...
    巴拿馬草帽閱讀 3,926評論 0 3

友情鏈接更多精彩內(nèi)容