本篇內(nèi)容介紹了“如何獲取redis中所有的鍵”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)浦東免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
在日常的開發(fā)中我們有時會要遍歷Redis中的所有的鍵,我們在之前的文章中已經(jīng)介紹過了,我們可以用keys命令來獲取所有的鍵,那么在Redis中除了keys命令之外,我們還可以使用scan命令獲取。下面我們將詳細了解一下這兩種命令的相關(guān)內(nèi)容。
1.全量遍歷鍵
keys pattern
在之前的文章中我們已經(jīng)介紹過了,可以直接使用
keys *
命令來遍歷Redis中的所有鍵,那么實際上keys命令也是可以支持pattern匹配的。下面我們通過例子演示一下上面所說的內(nèi)容。
下面我們看一下pattern通配符的詳細說明:
- * 代表匹配任意字符
- ? 代表匹配一個字符
- [] 代表匹配部分字符,例如[1,3]代表匹配1和3,而[1-10]代表匹配1到10的任意數(shù)字。
- x 轉(zhuǎn)移字符,例如要匹配星號,問號需要轉(zhuǎn)義的字符
下面我們繼續(xù)看相關(guān)用例。
Redis中的keys命令是很實用的命令,例如如果我要刪除指定名字開頭的鍵時,也可以使用keys命令先查找,然后在執(zhí)行刪除。具體命令如下:
./redis-cli keys j* | xargs ./redis-cli del
備注:在執(zhí)行上述刪除命令時,是不需要在Redis客戶端中執(zhí)行時的。
我們知道在Redis中是單架構(gòu)的,所以在執(zhí)行keys命令時有時會造成阻塞,所以我們在使用keys命令時要慎用。下面我們看一下,使用keys命令的注意事項。
因為keys命令是會阻塞的,所以我們在使用keys命令時,要在非業(yè)務(wù)的客戶端中進行,這樣即使keys命令會阻塞,也不會影響相關(guān)的業(yè)務(wù)。
如Redis中的鍵總數(shù)比較少時,可以直接使用keys命令。
如果Redis中的鍵的總數(shù)比較多,并且我們不得不在業(yè)務(wù)環(huán)境的客戶端如生產(chǎn)環(huán)境客戶端中獲取所有鍵時,那我們可以使用scan命令,因為該命令不會對客戶端造成阻塞。
下面我們了解一下Redis中scan命令。
2.漸進式遍歷
Redis在2.8版本之后,提供了scan命令,用這個命令可以有效的解決keys命令阻塞的問題。但scan命令和keys命令不同,scan命令是采用漸進式方式遍歷鍵的。并且scan命令的時間復(fù)雜度為O(1)。所以scan命令如果要實現(xiàn)keys命令的功能,則要執(zhí)行很多次scan命令。因為在Redis中鍵的存儲實際上使用的是hashtable數(shù)據(jù)結(jié)構(gòu)。所以我們在使用scan命令時,可以理解為只獲取字典的一部分,如果要獲取到所有鍵時,則要調(diào)用多次scan命令。
scan cursor [MATCH pattern] [COUNT count]
下面我們詳細介紹一下scan命令的相關(guān)參數(shù)說明:
cursor: 必須參數(shù),cursor是一個游標參數(shù),第一次遍歷時游標從0開始,每次scan遍歷完都會返回當(dāng)前游標的值。
MATCH pattern: 可選參數(shù),和keys中的pattern參數(shù)一樣。
COUNT count: 可選參數(shù),count參數(shù)指的是scan命令每次返回鍵的個數(shù)。
下面我們看一下scan命令的相關(guān)例子。
就向上面執(zhí)行的scan命令一樣,scan命令每次執(zhí)行完都會返回,上次cursor的參數(shù),當(dāng)cursor參數(shù)為0時,則表示,Redis中的所有的鍵都已經(jīng)遍歷完了。
在Redis中除了scan命令外,還提供了hscan、sscan、zscan等命令,它們的使用方式,均和scan命令一樣。
下面我們看一下scan命令的注意事項。
優(yōu)勢:可以解決keys命令中命令阻塞的問題。
劣勢:如果使用scan命令時,如果Redis中的鍵發(fā)生了變化例如:增加、刪除、修改等操作時,scan命令可能會遇到遍歷不到所有鍵的情況,這也是我們在使用scan命令遍歷的鍵特別要注意的事項。
“如何獲取Redis中所有的鍵”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
分享文章:如何獲取Redis中所有的鍵
標題網(wǎng)址:http://m.newbst.com/article18/jhspgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站策劃、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)