欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年05月16日 09:58:05   作者:J_hong  
這篇文章主要介紹了Python redis操作,結(jié)合實例形式分析了Python redis的連接、管道、發(fā)布和訂閱等相關(guān)概念、原理及操作技巧,需要的朋友可以參考下

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

一、redis

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

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

二、python操作redis

1、連接方式

redis-py提供兩個類Redis和StrictRedis用于實現(xiàn)Redis的命令,StrictRedis用于實現(xiàn)大部分官方的命令,并使用官方的語法和命令,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實例都會維護一個自己的連接池??梢灾苯咏⒁粋€連接池,然后作為參數(shù)Redis,這樣就可以實現(xiàn)多個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默認在執(zhí)行每次請求都會創(chuàng)建(連接池申請連接)和斷開(歸還連接池)一次連接操作,如果想要在一次請求中指定多個命令,則可以使用pipline實現(xiàn)一次請求指定多個命令,并且默認情況下一次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、發(fā)布和訂閱

首先定義一個RedisHelper類,連接Redis,定義頻道為monitor,定義發(fā)布(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):#定義發(fā)布方法
    self.__conn.publish(self.channel,msg)
    return True
  def subscribe(self):#定義訂閱方法
    pub = self.__conn.pubsub()
    pub.subscribe(self.channel)
    pub.parse_response()
    return pub

發(fā)布者

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

訂閱者

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

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

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

相關(guān)文章

  • Python使用jupyter notebook查看ipynb文件過程解析

    Python使用jupyter notebook查看ipynb文件過程解析

    這篇文章主要介紹了Python使用jupyter notebook查看ipynb文件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • Python接口自動化淺析如何處理動態(tài)數(shù)據(jù)

    Python接口自動化淺析如何處理動態(tài)數(shù)據(jù)

    本文是python接口自動化系列文章,主要介紹了接口自動化過程中,動態(tài)數(shù)據(jù)如何生成、動態(tài)數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)進行對比并替換,有需要的朋友可以參考下
    2021-08-08
  • Python多元非線性回歸及繪圖的實現(xiàn)

    Python多元非線性回歸及繪圖的實現(xiàn)

    本文主要介紹了Python多元非線性回歸及繪圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • python nohup 實現(xiàn)遠程運行不宕機操作

    python nohup 實現(xiàn)遠程運行不宕機操作

    這篇文章主要介紹了python nohup 實現(xiàn)遠程運行不宕機操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python之Class&Object用法詳解

    Python之Class&Object用法詳解

    今天小編就為大家分享一篇Python之Class&Object用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • pytorch使用tensorboard報錯問題及解決

    pytorch使用tensorboard報錯問題及解決

    這篇文章主要介紹了pytorch使用tensorboard報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java?超詳細講解核心類Spring?JdbcTemplate

    Java?超詳細講解核心類Spring?JdbcTemplate

    JdbcTemplate?JdbcTemplate是Spring?JDBC核心包(core)中的核心類,它可以通過配置文件、注解、Java?配置類等形式獲取數(shù)據(jù)庫的相關(guān)信息,實現(xiàn)了對JDBC開發(fā)過程中的驅(qū)動加載、連接的開啟和關(guān)閉、SQL語句的創(chuàng)建與執(zhí)行、異常處理、事務(wù)處理、數(shù)據(jù)類型轉(zhuǎn)換等操作的封裝
    2022-04-04
  • pandas數(shù)據(jù)清洗實現(xiàn)刪除的項目實踐

    pandas數(shù)據(jù)清洗實現(xiàn)刪除的項目實踐

    本文主要介紹了pandas數(shù)據(jù)清洗實現(xiàn)刪除的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python語言中的數(shù)據(jù)類型-序列

    Python語言中的數(shù)據(jù)類型-序列

    這篇文章主要介紹了Python語言中的數(shù)據(jù)類型-序列,前面我們提到了Python數(shù)據(jù)類型中的內(nèi)置數(shù)值類型與字符串類型。今天學(xué)習(xí)一下Python的序列數(shù)據(jù)類型,要知道的是在Python中沒有數(shù)組這一數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考一下
    2022-02-02
  • python多線程分塊讀取文件

    python多線程分塊讀取文件

    這篇文章主要為大家詳細介紹了python多線程分塊讀取文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評論