亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python redis操作實例分析【連接、管道、發布和訂閱等】

系統 1819 0

本文實例講述了Python redis操作。分享給大家供大家參考,具體如下:

一、redis

redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。

Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便,Redis支持主從同步。數據可以從主服務器向任意數量的從服務器上同步,從服務器可以是關聯其他從服務器的主服務器。這使得Redis可執行單層樹復制。從盤可以有意無意的對數據進行寫操作。由于完全實現了發布/訂閱機制,使得從數據庫在任何地方同步樹時,可訂閱一個頻道并接收主服務器完整的消息發布記錄。

二、python操作redis

1、連接方式

redis-py提供兩個類Redis和StrictRedis用于實現Redis的命令,StrictRedis用于實現大部分官方的命令,并使用官方的語法和命令,Redis是StrictRedis的子類

            
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis
r = redis.Redis(host='192.168.0.110', port=6379,db=0)
r.set('name', 'zhangsan')  #添加
print (r.get('name'))  #獲取


          

2、連接池

redis-py使用connection pool來管理對一個redis server的所有連接,避免每次建立、釋放連接的開銷。默認,每個Redis實例都會維護一個自己的連接池。可以直接建立一個連接池,然后作為參數Redis,這樣就可以實現多個Redis實例共享一個連接池。

            
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis
pool = redis.ConnectionPool(host='192.168.0.110', port=6379)
r = redis.Redis(connection_pool=pool)
r.set('name', 'zhangsan')  #添加
print (r.get('name'))  #獲取


          

3、操作

redis詳細操作命令

4、管道

redis-py默認在執行每次請求都會創建(連接池申請連接)和斷開(歸還連接池)一次連接操作,如果想要在一次請求中指定多個命令,則可以使用pipline實現一次請求指定多個命令,并且默認情況下一次pipline 是原子性操作。

            
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import redis
pool = redis.ConnectionPool(host='192.168.0.110', port=6379)
r = redis.Redis(connection_pool=pool)
pipe = r.pipeline(transaction=True)
r.set('name', 'zhangsan')
r.set('name', 'lisi')
pipe.execute()


          

5、發布和訂閱

首先定義一個RedisHelper類,連接Redis,定義頻道為monitor,定義發布(publish)及訂閱(subscribe)方法。

            
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import redis
class RedisHelper(object):
  def __init__(self):
    self.__conn = redis.Redis(host='192.168.0.110',port=6379)#連接Redis
    self.channel = 'monitor' #定義名稱
  def publish(self,msg):#定義發布方法
    self.__conn.publish(self.channel,msg)
    return True
  def subscribe(self):#定義訂閱方法
    pub = self.__conn.pubsub()
    pub.subscribe(self.channel)
    pub.parse_response()
    return pub


          

發布者

            
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#發布
from RedisHelper import RedisHelper
obj = RedisHelper()
obj.publish('hello')#發布


          

訂閱者

            
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#訂閱
from RedisHelper import RedisHelper
obj = RedisHelper()
redis_sub = obj.subscribe()#調用訂閱方法
while True:
  msg= redis_sub.parse_response()
  print (msg)


          

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python常見數據庫操作技巧匯總》、《Python編碼操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美大片毛片大片 | 欧美精品国产日韩综合在线 | 一级毛片成人免费看免费不卡 | 视频三区精品中文字幕 | 亚洲操综合 | 亚洲自拍第二页 | 奇米影视资源 | 精品久久久久久久久久中文字幕 | 爱爱免费网站 | 夜夜骚视频 | 亚洲一区在线视频 | 色www精品视频在线观看 | 91午夜精品亚洲一区二区三区 | 四虎影视在线免费观看 | 模特视频一二三区 | www.狠狠艹 | 日本一区二区精品 | 欧美毛片又粗又长又大 | 日韩视频网 | 久草热久草在线 | 五月天婷婷在线观看 | 国产一区二区免费在线 | 日韩精品一区二区三区中文3d | 中文字幕在线观看亚洲 | 国产a网| 这里只有久久精品视频 | 久久精品中文字幕首页 | 国产在线色视频 | 四虎色播 | 久久影院朴妮唛 | 亚洲日本人成网站在线观看 | 亚洲第一区视频在线观看 | 免费人成激情视频在线看 | 久青草视频97国内免费影视 | www.伊人.com | 99在线观看视频免费 | 色一色综合 | 欧美精品久久久久久久免费观看 | 国产午夜精品一区二区三区嫩草 | 亚洲最新在线视频 | 日韩美女va在线毛片免费知 |