欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis獲取某個前綴的key腳本實例

 更新時間:2018年04月18日 11:18:46   作者:linda玲  
這篇文章主要給大家介紹了關(guān)于Redis獲取某個前綴的key腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。

1.背景

在平時的維護中,經(jīng)常會遇到要統(tǒng)計某個前綴的key有多少,在請求比較多的redis中,keys * 會直接導(dǎo)致阻塞。
可以采用scan的方式進行增量迭代,查詢使用pipeline減少交互,提高效率。

2.scan命令的優(yōu)缺點

SCAN命令的有SCAN,SSCAN,HSCAN,ZSCAN。

SCAN的話就是遍歷所有的keys

其他的SCAN命令的話是SCAN選中的集合。

SCAN命令是增量的循環(huán),每次調(diào)用只會返回一小部分的元素。所以不會有KEYS命令的坑。

SCAN命令返回的是一個游標(biāo),從0開始遍歷,到0結(jié)束遍歷。

scan 0
1) "655"
2) 1) "test1"
  2) "test2"

返回值一個array,一個是下次循環(huán)的cursorId,一個是元素數(shù)組。SCAN命令不能保證每次返回的值都是有序的,另外同一個key有可能返回多次,不做區(qū)分,需要應(yīng)用程序去處理。

另外SCAN命令可以指定COUNT,默認(rèn)是10。但是這個并不是指定多少,就能返回多少,這只是一個提示,并不能保證一定返回這么多條。

優(yōu)點:

  • 提供鍵空間的遍歷操作,支持游標(biāo),復(fù)雜度O(1), 整體遍歷一遍只需要O(N);
  • 提供結(jié)果模式匹配;
  • 支持一次返回的數(shù)據(jù)條數(shù)設(shè)置,但僅僅是個hints,有時候返回的會多;
  • 弱狀態(tài),所有狀態(tài)只需要客戶端需要維護一個游標(biāo);

缺點:

  • 無法提供完整的快照遍歷,也就是中間如果有數(shù)據(jù)修改,可能有些涉及改動的數(shù)據(jù)遍歷不到;
  • 每次返回的數(shù)據(jù)條數(shù)不一定,極度依賴內(nèi)部實現(xiàn);
  • 返回的數(shù)據(jù)可能有重復(fù),應(yīng)用層必須能夠處理重入邏輯;

3. python腳本的實現(xiàn)

python中有一個封裝的函數(shù)scan_iter--查看所有元素--迭代器

腳本內(nèi)容:

#!/usr/bin/env python
# -*- coding: UTF-8 -*- 
#作用:統(tǒng)計某個前綴key的個數(shù),并將其輸入到文件
#使用方法:python scan_redis.py apus* 100
__author__ = "lcl" 
import sys
import redis 
import os 
pool=redis.ConnectionPool(host='192.168.225.128',port=6379,db=0) 
r = redis.StrictRedis(connection_pool=pool) 
#掃描匹配值,通過sys.argv傳參
match = sys.argv[1]
#每次匹配數(shù)量
count = sys.argv[2]
#print match
#print count
#總數(shù)量
total = 0
#掃描到的key輸出到文件
path = os.getcwd()
#掃描到的key輸出的文件
txt = path+"/keys.txt"
f = open(txt,"w")
for key in r.scan_iter(match = match,count = count):
# f.write("%s %s" % (key,"\n"))
 f.write(key+"\n")
 total = total+1
f.close
print "匹配: %s 的數(shù)量為:%d " % (match,total)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • redis 替代php文件存儲session的實例

    redis 替代php文件存儲session的實例

    這篇文章主要介紹了redis 替代php文件存儲session的實例的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這樣的方法,需要的朋友可以參考下
    2017-10-10
  • Spark刪除redis千萬級別set集合數(shù)據(jù)實現(xiàn)分析

    Spark刪除redis千萬級別set集合數(shù)據(jù)實現(xiàn)分析

    這篇文章主要為大家介紹了Spark刪除redis千萬級別set集合數(shù)據(jù)實現(xiàn)過程分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • 推薦幾款 Redis 可視化工具(太厲害了)

    推薦幾款 Redis 可視化工具(太厲害了)

    這篇文章主要介紹了推薦幾款 Redis 可視化工具,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-04-04
  • redis如何設(shè)置database個數(shù)

    redis如何設(shè)置database個數(shù)

    這篇文章主要介紹了redis如何設(shè)置database個數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 在redis中存儲ndarray的示例代碼

    在redis中存儲ndarray的示例代碼

    在Redis中存儲NumPy數(shù)組(ndarray)通常需要將數(shù)組轉(zhuǎn)換為二進制格式,然后將其存儲為字符串,這篇文章給大家介紹了在redis中存儲ndarray的示例代碼,感興趣的朋友一起看看吧
    2024-02-02
  • Redis中List類型的常用命令

    Redis中List類型的常用命令

    本文主要介紹了Redis中List類型的常用命令,包含12種常用命令,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關(guān)于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • redission分布式鎖防止重復(fù)初始化問題

    redission分布式鎖防止重復(fù)初始化問題

    這篇文章主要介紹了redission分布式鎖防止重復(fù)初始化問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Redis鎖完美解決高并發(fā)秒殺問題

    Redis鎖完美解決高并發(fā)秒殺問題

    本文主要介紹了Redis鎖完美解決高并發(fā)秒殺問題,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Redis動態(tài)字符串SDS的實現(xiàn)

    Redis動態(tài)字符串SDS的實現(xiàn)

    SDS在Redis中是實現(xiàn)字符串對象的工具,本文主要介紹了Redis動態(tài)字符串SDS的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-11-11

最新評論