成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Redis-腳本-獲取某個(gè)前綴的key

馬忠志 / 1452人閱讀

摘要:背景在平時(shí)的維護(hù)中,經(jīng)常會(huì)遇到要統(tǒng)計(jì)某個(gè)前綴的有多少,在請(qǐng)求比較多的中,會(huì)直接導(dǎo)致阻塞。可以采用的方式進(jìn)行增量迭代,查詢使用減少交互,提高效率。

1.背景

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

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

優(yōu)點(diǎn):
提供鍵空間的遍歷操作,支持游標(biāo),復(fù)雜度O(1), 整體遍歷一遍只需要O(N);
提供結(jié)果模式匹配;
支持一次返回的數(shù)據(jù)條數(shù)設(shè)置,但僅僅是個(gè)hints,有時(shí)候返回的會(huì)多;
弱狀態(tài),所有狀態(tài)只需要客戶端需要維護(hù)一個(gè)游標(biāo);
缺點(diǎn):
無(wú)法提供完整的快照遍歷,也就是中間如果有數(shù)據(jù)修改,可能有些涉及改動(dòng)的數(shù)據(jù)遍歷不到;
每次返回的數(shù)據(jù)條數(shù)不一定,極度依賴內(nèi)部實(shí)現(xiàn);
返回的數(shù)據(jù)可能有重復(fù),應(yīng)用層必須能夠處理重入邏輯;

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

python中有一個(gè)封裝的函數(shù)scan_iter--查看所有元素--迭代器
腳本內(nèi)容:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-  
#作用:統(tǒng)計(jì)某個(gè)前綴key的個(gè)數(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,"
"))
   f.write(key+"
")
   total = total+1
f.close

print "匹配: %s 的數(shù)量為:%d " % (match,total)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41550.html

相關(guān)文章

  • Redis學(xué)習(xí)

    摘要:?jiǎn)尉€程執(zhí)行命令。文件描述符事件。內(nèi)部原因不合理使用或數(shù)據(jù)結(jié)構(gòu)可能由此導(dǎo)致慢查詢等飽和是單線程,只會(huì)使用單個(gè)持久化阻塞操作產(chǎn)生阻塞,對(duì)硬盤的操作產(chǎn)生阻塞或?qū)懖僮髯枞?。?nèi)存達(dá)到時(shí)執(zhí)行內(nèi)存溢出控制策略。 最近在看《Redis開發(fā)與運(yùn)維》,把自己學(xué)會(huì)的知識(shí)點(diǎn)記錄下來(lái),畢竟好記性不如爛筆頭。 一.Redis是什么。 Redis是一個(gè)Key-Value的NoSQL數(shù)據(jù)庫(kù). 二.Redis的特點(diǎn)。...

    miguel.jiang 評(píng)論0 收藏0
  • Spring Boot項(xiàng)目實(shí)踐之問答社區(qū)

    摘要:異步事件處理本項(xiàng)目涉及到多種異步事件的處理。即是的粉絲,是的關(guān)注對(duì)象。模式定義優(yōu)缺點(diǎn)推事件觸發(fā)后廣播給所有粉絲。具體來(lái)說(shuō),推模式就是事件觸發(fā)后產(chǎn)生,觸發(fā)事件的用戶下所有粉絲的實(shí)現(xiàn)中都存入該的。 項(xiàng)目源代碼已托管在 Github,歡迎 Star、Fork。 Q & A 問答社區(qū) QA 是一個(gè)基于 B/S 架構(gòu)而設(shè)計(jì)開發(fā)的社區(qū)網(wǎng)站。 showImg(https://segmentfault...

    binaryTree 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<