python 連接redis集群 关面,常見(jiàn)報(bào)錯(cuò)解決等太。

背景:工作需要澈驼,處理的數(shù)據(jù)需要通過(guò)redis進(jìn)行緩存處理筛武,之后方便統(tǒng)計(jì)分析徘六。
目標(biāo):python連接redis進(jìn)行讀取&寫(xiě)入待锈。


連接 redis 與 redis集群 是不同的 !!柴信!


一随常、連接redis

單一的連接redis上的某一個(gè)節(jié)點(diǎn)

import redis  
  
pool=redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)  
r = redis.StrictRedis(connection_pool=pool)  
  
keys = r.keys()    #獲取所有的鍵
r.set('test001','123456')    #寫(xiě)新的值
r.get('test001')    #查詢(xún)值


二绪氛、連接redis集群

Redis集群是一個(gè)節(jié)點(diǎn)集合枣察,在調(diào)用一個(gè)節(jié)點(diǎn)時(shí)其它節(jié)點(diǎn)都會(huì)響應(yīng)询件。
如果直接使用redis包操作可能會(huì)報(bào)錯(cuò)

redis.exceptions.ResponseError: MOVED 6918 127.0.0.1:6381

報(bào)錯(cuò)原因:因?yàn)閞edis由單節(jié)點(diǎn)變?yōu)榧和鹄牛鴓ython的redis連接包暫時(shí)還不支持redis集群連接方式嘿辟,需要更換連接包
解決方法: 可以使用rediscluster連接redis集群红伦,注意其中依賴(lài)redis包的版本昙读,否則會(huì)報(bào)錯(cuò)唠叛。
redis-py-cluster說(shuō)明文檔

pip install redis-py-cluster

完成后再次進(jìn)行連接

# -*- coding:utf-8 -*-
from rediscluster import StrictRedisCluster

nodes = [{"host": "localhost", "port": "6379"}]
r = StrictRedisCluster(startup_nodes=nodes, decode_responses=True)

r.set('test', 111)

三调鲸、常見(jiàn)說(shuō)明

1定拟、版本報(bào)錯(cuò)

隨著導(dǎo)入的不同的redis版本會(huì)報(bào)錯(cuò)

unknow command "CONFIG"

配置一個(gè)跳過(guò)檢查的參數(shù) skip_full_coverage_check=True 就可以了

r = StrictRedisCluster(startup_nodes=nodes, decode_responses=True,skip_full_coverage_check=True)
2雷滚、危險(xiǎn)操作

一下操作可能會(huì)直接影響數(shù)據(jù)庫(kù)呆万,使用中必須注意3龅I椅袒炉!

刪除數(shù)據(jù)
r.flushall()      #刪除所有數(shù)據(jù)
r.flushdb()     #刪除所有數(shù)據(jù)庫(kù)下的數(shù)據(jù)
遍歷查詢(xún)keys
r.keys()

平時(shí)keys()命令獲取所有鍵芋哭,但是如果數(shù)據(jù)量多大的話,遍歷一次可能會(huì)引起生產(chǎn)事故
Redis的KEYS命令引起宕機(jī)事件

3句各、scan命令初厚,進(jìn)行模糊查詢(xún)

既然keys()有如此危險(xiǎn)的隱患绪杏,可能keys()被禁止使用僧著。
那么我們讀取未知的鍵應(yīng)該怎么辦呢盹愚?
這個(gè)時(shí)候可以使用scan遍歷數(shù)據(jù)庫(kù)
python redis常用操作說(shuō)明

scan(cursor=0, match=None, count=None) 增量式迭代獲取毅舆,redis里匹配的的name【推薦使用下面的方法】
cursor憋活,游標(biāo)(基于游標(biāo)分批取獲取數(shù)據(jù))
match悦即,匹配指定key辜梳,默認(rèn)None 表示所有的
keycount作瞄,每次分片最少獲取個(gè)數(shù)粉洼,默認(rèn)None表示采用Redis的默認(rèn)分片個(gè)數(shù)

簡(jiǎn)單來(lái)說(shuō) cursor默認(rèn)為 0属韧。如果遍歷完全則返回 0,否則返回其他游標(biāo)会傲。
match 就是模糊查詢(xún) eg: 'test*'
keycount 一次遍歷返回的個(gè)數(shù)

from rediscluster import StrictRedisCluster

nodes = [{"host": "localhost", "port": "6379"}]
r = StrictRedisCluster(startup_nodes=nodes, decode_responses=True,skip_full_coverage_check=True)

###遍歷讀取所有鍵
all_scan = r.scan(curson =0,match = 'AI*',count = 100000)

###將符合條件的值加入到列表中
all_keys = []
for i in all_scan:
    iteration_num = all_scan[i][0]
    all_keys = all_keys + all_scan[i][1]   
  
###如果  iteration_num 淌山!= 0 的話泼疑,說(shuō)明一次遍歷還有數(shù)據(jù)沒(méi)有被遍歷完退渗。
while iteration_num 会油!= 0:
    all_scan = r.scan(curson =iteration_num,match = 'AI*',count = 100000)
    for i in all_scan:
        iteration_num = all_scan[i][0]
        all_keys = all_keys + all_scan[i][1]   
  

這樣操作可以完成相當(dāng)于 redis中的模糊查詢(xún)都许。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梭稚,一起剝皮案震驚了整個(gè)濱河市忱屑,隨后出現(xiàn)的幾起案子莺戒,更是在濱河造成了極大的恐慌从铲,老刑警劉巖名段,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伸辟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡卡啰,警方通過(guò)查閱死者的電腦和手機(jī)振湾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)恰梢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梗掰,“玉大人嵌言,你說(shuō)我怎么就攤上這事及穗。” “怎么了苛白?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)购裙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)躯畴,這世上最難降的妖魔是什么薇芝? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮夯到,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘阅爽。我一直安慰自己,他們只是感情好付翁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般赫粥。 火紅的嫁衣襯著肌膚如雪越平。 梳的紋絲不亂的頭發(fā)上秦叛,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音舟肉,去河邊找鬼。 笑死整慎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的比然。 我是一名探鬼主播强法,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蓖墅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼论矾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惠豺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捺弦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片列吼。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡理郑,死狀恐怖您炉,靈堂內(nèi)的尸體忽然破棺而出餐弱,到底是詐尸還是另有隱情瓢谢,我是刑警寧澤氓扛,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站淫痰,受9級(jí)特大地震影響待错,放射性物質(zhì)發(fā)生泄漏讲冠。R本人自食惡果不足惜沟启,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一胳搞、第九天 我趴在偏房一處隱蔽的房頂上張望肌毅。 院中可真熱鬧悬而,春花似錦、人聲如沸到腥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春潜腻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背威鹿。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工臂容, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糟秘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓嘁灯,卻偏偏與公主長(zhǎng)得像丑婿,于是被迫代替她去往敵國(guó)和親秒旋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355