python 操作 redis

由官方文檔而得
python 利用 redis 第三方庫
首先安裝
pip install redis
然后就可以開始愉快地使用了

import redis
r = redis.StricRedis(host='localhost', port=6379, db=0)
r.set('test', '1')
r.get('test')   # ->> '1'

注讶泰,r 方法一覽:


dir(r)

dir(r)

默認情況下,響應(yīng)以 Python3 的字節(jié)Python 2 的 str 形式返回,用戶負責(zé)解碼操作平夜。
redis-py 實現(xiàn)了兩個類來操作 redis

  1. StricRedis 盡量堅持官方語法,除了以下命令:
    • select 沒有實現(xiàn),考慮到了線程安全
    • del Python 關(guān)鍵字粟瞬,用 delete 代替
    • config get|se 作為 config_get / config_set 實現(xiàn)
    • multi / exec 作為 Pipeline 類的一部分實現(xiàn)的。
  2. Redis 類是 StricRedis 的子類萤捆,提供向后的兼容性裙品。推薦使用 StricRedis。Redis 覆蓋了幾個命令:
    • lrem num 和 value 參數(shù)順序顛倒俗或,num 提供默認值 0
    • zadd Redis類期望* args的形式為:name1市怎,score1,name2辛慰,score2区匠,...,而 StricRedis 是 score1帅腌,name1驰弄,score2,name2速客,...戚篙,這與 Redis 一樣。
    • setex time 和 value 順序顛倒溺职。在 Redis 類中是:setex(key, value, time)岔擂,在 StricRedis 類中是:setex(key, time, value)

連接池來操作

pool = redis.ConnectionPool(host = ' localhost '浪耘,port = 6379智亮,db = 0)
r = redis.Redis(connection_pool = pool)

解析器

可以使用 Redis 官方維護的一個 C 庫 hiredis
pip install hiredis

線程安全

可以在線程之間安全地共享 Redis 客戶端實例。有一點需要注意:Redis SELECT命令点待。SELECT命令允許您切換連接當前使用的數(shù)據(jù)庫阔蛉。該數(shù)據(jù)庫保持選定狀態(tài)直到選擇另一個數(shù)據(jù)庫或連接關(guān)閉。這會產(chǎn)生一個問題癞埠,即連接可以返回到連接到不同數(shù)據(jù)庫的池状原。因此不會實現(xiàn) select 命令聋呢。
在線程之間傳遞PubSub或Pipeline對象是不安全的。

管道

一般用來執(zhí)行事務(wù)操作

>>> r = redis.Redis(...)
>>> r.set('bing', 'baz')
>>> # Use the pipeline() method to create a pipeline instance
>>> pipe = r.pipeline()
>>> # The following SET commands are buffered
>>> pipe.set('foo', 'bar')
>>> pipe.get('bing')
>>> # the EXECUTE call sends all buffered commands to the server, returning
>>> # a list of responses, one for each command.
>>> pipe.execute()
[True, 'baz']

也可以進行鏈式操作

>>> pipe.set(' foo '颠区,' bar ').sadd(' faz '削锰,' baz ').incr(' auto_number ')。execute()
[True毕莱,True器贩,6]

禁用原子性:
pipe = r.pipeline(transaction = False)
WATCH 監(jiān)控命令:

>>> with r.pipeline() as pipe:
...     while 1:
...         try:
...            # 設(shè)置一個 watch
...             pipe.watch('OUR-SEQUENCE-KEY')
...             current_value = pipe.get('OUR-SEQUENCE-KEY')
...             next_value = int(current_value) + 1
...             # 開始事務(wù)
...             pipe.multi()
...             pipe.set('OUR-SEQUENCE-KEY', next_value)
...             # 執(zhí)行
...             pipe.execute()
...             # 如果拋出 WatchError ,表示原子性失敗
...             break
...        except WatchError:
...             # 另一個客戶端修改了朋截,我們必須重試
...             continue

由于 Pipeline 在 watch 期間綁定到單個連接蛹稍,必須調(diào)用 reset() 來確保返回連接池,使用 with 上下文的話部服,它會自動調(diào)用唆姐。當然也可以手動調(diào)用:

>>> pipe = r.pipeline()
>>> while 1:
...     try:
...         pipe.watch('OUR-SEQUENCE-KEY')
...         ...
...         pipe.execute()
...         break
...     except WatchError:
...         continue
...     finally:
...         pipe.reset()

也可以使用 transaction() 方法來簡化操作

>>> def client_side_incr(pipe):
...     current_value = pipe.get('OUR-SEQUENCE-KEY')
...     next_value = int(current_value) + 1
...     pipe.multi()
...     pipe.set('OUR-SEQUENCE-KEY', next_value)
>>>
>>> r.transaction(client_side_incr, 'OUR-SEQUENCE-KEY')
[True]

注:訂閱發(fā)布模式還沒有詳細理解,故沒寫廓八,以后用到了會寫奉芦。

迭代器

>>> for key, value in (('A', '1'), ('B', '2'), ('C', '3')):
...     r.set(key, value)
>>> for key in r.scan_iter():
...     print key, r.get(key)
A 1
B 2
C 3
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市剧蹂,隨后出現(xiàn)的幾起案子声功,更是在濱河造成了極大的恐慌,老刑警劉巖宠叼,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件先巴,死亡現(xiàn)場離奇詭異,居然都是意外死亡车吹,警方通過查閱死者的電腦和手機筹裕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窄驹,“玉大人朝卒,你說我怎么就攤上這事±植海” “怎么了抗斤?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丈咐。 經(jīng)常有香客問我瑞眼,道長,這世上最難降的妖魔是什么棵逊? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任伤疙,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘徒像。我一直安慰自己黍特,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布锯蛀。 她就那樣靜靜地躺著灭衷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旁涤。 梳的紋絲不亂的頭發(fā)上翔曲,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音劈愚,去河邊找鬼瞳遍。 笑死,一個胖子當著我的面吹牛造虎,可吹牛的內(nèi)容都是我干的傅蹂。 我是一名探鬼主播纷闺,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼算凿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了犁功?” 一聲冷哼從身側(cè)響起氓轰,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浸卦,沒想到半個月后署鸡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡限嫌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年靴庆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怒医。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡炉抒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稚叹,到底是詐尸還是另有隱情焰薄,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布扒袖,位于F島的核電站塞茅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏季率。R本人自食惡果不足惜野瘦,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望飒泻。 院中可真熱鬧鞭光,春花似錦啊掏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啡省,卻和暖如春娜睛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卦睹。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工畦戒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人结序。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓障斋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親徐鹤。 傳聞我的和親對象是個殘疾皇子垃环,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • python操作Redis 一. Redis是什么 Redis 是一個開源(BSD許可)的,內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲系...
    shu_ke閱讀 3,821評論 0 9
  • Python操作redis python連接方式:點擊 下面介紹詳細使用 1返敬、String 操作 redis中的S...
    子非初心閱讀 233評論 0 1
  • 連接數(shù)據(jù)庫 StrictRedis ConnectionPool 構(gòu)造url方式連接到數(shù)據(jù)庫遂庄,有以下三種模式: S...
    cnkai閱讀 3,044評論 0 2
  • 昨天,我們討論了python如何連接redis劲赠。今天我們要學(xué)習(xí)如何用python操作redis的數(shù)據(jù)涛目。 這里,再補...
    阿爾卑斯山上的小灰兔閱讀 1,299評論 0 0
  • 半倚窗扉立凛澎,村莊入眼漆霹肝。 亭臺人鼎沸, 暑熱褪羅衣塑煎。 注:新韻
    幽小窗閱讀 637評論 78 44