4.3、Python客戶端redis-py

Python客戶端redis-py

因為本書主要使用Java語言作為編程語言,所以對Python的客戶端redis-py不會太詳細(xì)介紹俭缓,主要介紹以下幾個方面:

  • 獲取redis-py
  • redis-py的基本使用方法
  • redis-py的Pipeline的使用
  • redis-py的Lua腳本使用
  1. 獲取redis-py

    Redis官網(wǎng)提供了很多Python語言的客戶端
    http://redis.io/clients#python ),但最被廣泛認(rèn)可的客戶端是
    redis-py酥郭。redis-py需要Python2.7以上版本祠乃,有關(guān)Python的安裝這里不會介
    紹狰域,主要介紹一下如何獲取安裝redis-py栖博,方法有三種:

    • 第一获洲,使用pip進行安裝:

    pip install redis

    • 第二额港,使用easy_install進行安裝:

    easy_install redis

    • 第三扛施,使用源碼安裝:以2.10.5版本為例子進行說明漓穿,只需要如下四步:
    wget https://github.com/sndymccurdy/redis-py/archive/2.10.5.zip
    unzip redis-2.10.5.zip
    cd redis-2.10.5
    # 安裝 redis-py
    python setup.py install
    
  2. redis-py的基本使用方法

    redis-py的使用方法也比較簡單枷餐,下面將逐步介紹坷衍。

    1)導(dǎo)入依賴庫:

    import redis

    2)生成客戶端連接:需要Redis的實例IP和端口兩個參數(shù):

    client = redis.StrictRedis(host='127.0.0.1', port=6379)

    3)執(zhí)行命令:redis-py的API保留了RedisAPI的原始風(fēng)格寝优,所以使用起來不會有
    不習(xí)慣的感覺:

    # True
    client.set(key, "python-redis")
    # world
    client.get(key)
    

    下面代碼給出redis-py操作Redis五種數(shù)據(jù)結(jié)構(gòu)的實例,輸出結(jié)果寫在注釋中:

    #1.string
    #輸出結(jié)果:True
    client.set("hello", "world")
    #輸出結(jié)果:world
    client.get("hello")
    #輸出結(jié)果 1
    clinet.incr("counter")
    
    #2.hash
    client.hset("myhash", "f1", "v1")
    client.hset("myhash", "f2", "v2")
    #輸出結(jié)果:{'f1': 'v1', 'f2': 'v2'}
    client.hgetall("myhash")
    
    #3.list
    client.rpush("mylist", "1")
    client.rpush("mylist", "2")
    client.rpush("mylist", "3")
    #輸出結(jié)果:['1', '2', '3']
    client.lrange("mylist", 0, -1)
    
    #4.set
    client.sadd("myset", "a")
    clinet.sadd("myset", "b")
    client.sadd("myset", "a")
    #輸出結(jié)果:set(['a', 'b'])
    client.smembers("myset")
    
    #5.zset
    client.zadd("myzset", "99", "tom")
    client.zadd("myzset", "66", "peter")
    client.zadd("myzset", "33", "james")
    #輸出結(jié)果:[('james", 33.0), ('peter', 66.0), ('tom', 99.0)]
    client.zrange("myzset", 0, -1, withscores=True)
    
  3. redis-py中Pipeline的使用方法

    redis-py支持Redis的Pipeline功能枫耳,下面用一個簡單的示例進行說明乏矾。

    1)引入依賴,生成客戶端連接:

    import redis
    client = redis.StrictRedis(host='127.0.0.1', port=6379)
    

    2)生成Pipeline:注意client.pipeline包含了一個參數(shù)迁杨,如果
    transaction=False代表不使用事務(wù):

    pipeline = client.pipeline(transaction=False)
    

    3)將命令封裝到Pipeline中钻心,此時命令并沒有真正執(zhí)行:

    pipeline.set("hello", "world")
    pipeline.incr("counter")
    

    4)執(zhí)行Pipeline:

    #[True, 3]
    result = pipeline.execute()
    

    下面將用redis-py的Pipeline實現(xiàn)mdel功能:

    import redis
    def mdel( keys ):
        client = redis.StrictRedis(host='127.0.0.1', port=6379)
        pipeline = client.pipeline(transaction=False)
        for key in keys:
            print pipeline.delete(key)
        return pipeline.execute();
    
  4. redis-py中的Lua腳本使用方法

    redis-py中執(zhí)行Lua腳本和redis-cli十分類似,redis-py提供了三個重要的函
    數(shù)實現(xiàn)Lua腳本的執(zhí)行:

    eval(String script, int keyCount, String... params)
    script_load(String script)
    evalsha(String sha1, int keyCount, String... params)
    

    eval函數(shù)有三個參數(shù):分別是:

    • script:Lua腳本內(nèi)容
    • keyCount:鍵的個數(shù)
    • params:相關(guān)參數(shù)KEYS和ARGV

    script_load和evalsha函數(shù)要一起使用铅协,首先使用script_load將腳本加載到
    Redis中捷沸,然后evalsha函數(shù)用來執(zhí)行腳本的哈希值,它需要三個參數(shù):

    • scriptSha:腳本的SHA1狐史。
    • keyCount:鍵的個數(shù)痒给。
    • params:相關(guān)參數(shù)KEYS和ARGV。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骏全,一起剝皮案震驚了整個濱河市苍柏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姜贡,老刑警劉巖序仙,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鲁豪,居然都是意外死亡潘悼,警方通過查閱死者的電腦和手機律秃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來治唤,“玉大人棒动,你說我怎么就攤上這事”鎏恚” “怎么了船惨?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缕陕。 經(jīng)常有香客問我粱锐,道長,這世上最難降的妖魔是什么扛邑? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任怜浅,我火速辦了婚禮,結(jié)果婚禮上蔬崩,老公的妹妹穿的比我還像新娘恶座。我一直安慰自己,他們只是感情好沥阳,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布跨琳。 她就那樣靜靜地躺著,像睡著了一般桐罕。 火紅的嫁衣襯著肌膚如雪脉让。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天功炮,我揣著相機與錄音侠鳄,去河邊找鬼。 笑死死宣,一個胖子當(dāng)著我的面吹牛伟恶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毅该,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼博秫,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了眶掌?” 一聲冷哼從身側(cè)響起挡育,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朴爬,沒想到半個月后即寒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年母赵,在試婚紗的時候發(fā)現(xiàn)自己被綠了逸爵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡凹嘲,死狀恐怖师倔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情周蹭,我是刑警寧澤趋艘,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站凶朗,受9級特大地震影響瓷胧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棚愤,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一搓萧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遇八,春花似錦、人聲如沸耍休。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羊精。三九已至斯够,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間喧锦,已是汗流浹背读规。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留燃少,地道東北人束亏。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像阵具,于是被迫代替她去往敵國和親碍遍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

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