Python使用redis的消息隊列

Redis 服務python

一、安裝redis

yum install redis

二、 python安裝支持模塊數據庫

/opt/python2.7.13/bin/pip install redis

三、 和redis的簡單直接交互ide

  In [1]: import redis

  In [2]: rc = redis.Redis(host='192.168.8.237',port=6379,decode_responses=True)

  In [5]: rc.set('imoocc','jeson')

  Out[5]: True

  In [7]: rc.get('imoocc')

  Out[7]: u'jeson'

Redis簡單操做工具

對於和Redis的交互, Redis的類中提供了鏈接池的方式,咱們能夠經過鏈接池管理並操做Redis。學習

一、鏈接池創建,利用鏈接池鏈接spa

  In [8]: connpool = redis.ConnectionPool(host='192.168.8.237',port=6379,decode_responses=True)

  In [9]: rc = redis.Redis(connection_pool=connpool)

  In [10]: rc.set('imooccp','1234566')

  Out[10]: True

  In [11]: rc.get('imooccp')

  Out[11]: u'1234566'

二、redis中DB ,指定數據存取的DB設計

redis.conf中設置了db的數量,那麼redis的數據庫名也爲0 到15,以下:code

databases 16視頻

指定使用那個數據庫名,咱們經過以下的方式,就能夠了:

''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:857662006 尋找有志同道合的小夥伴, 互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! '''
  In [29]: connpool = redis.ConnectionPool(host='192.168.8.237',port=6379,decode_responses=True,db=3)

  In [30]: rc.set('test2','lllll')

  Out[30]: True

這樣就將數據庫寫入到db3了,如何驗證呢?咱們從服務端來認證最直接,以下:

用redis-cli(redis自帶的工具)登陸服務端,查看寫入的key。

  127.0.0.1:6379> SELECT 3

  OK

  127.0.0.1:6379[3]> KEYS * //查看db 3這個庫下全部的key

  1) "imooccc"

那麼 接下來介紹redis詳細項目使用的內容,你們不要以爲介紹的內容擴散太大。

最近在做一個任務系統,任務寫入是不定時的,咱們須要用一個程序去按期消費這些任務,必須是有前後順序的,並且是前一個任務確認執行完後,纔會去執行下一個。

怎麼辦呢?用隊列啊,對吧!用什麼隊列,怎麼用?

介紹下爲何要用redis來做消息處理:

簡單說,redis支持兩種消費模式,一種發佈-訂閱模式,及一個消息會被多個消費者處理(簡單說相似是一個廣播消息,全部人都會接收)。很明顯我得系統中不須要這麼用,系統裏邊就須要隊列模式,及先到的任務優先處理。那麼對隊列用什麼類型得數據庫結構來做呢?

先得聊聊list

list 這個數據類型,在python裏是一個列表,在redis裏就是一個有序隊列(或者說數據鏈表)了。

類型圖示以下:
在這裏插入圖片描述
你們看了這個結構就能夠清楚了,咱們能夠利用list的數據接口模式,設計從左端和右端均可以對list進元素的同向處理(知足隊列的特性先到先出)。

一、從左端插入元素

In [10]: rc.lpush('tasklist',1,2,3)

Out[10]: 3L

打印輸出內容,以下:

In [17]: print(rc.lrange('tasklist',0,2))

[u'3', u'2', u'1']

相似的從左測插入的方法還有lpushx(name,value),區別只有當name存在纔將value插入到最左邊。

二、從右邊插入元素

''' 遇到問題沒人解答?小編建立了一個Python學習交流QQ羣:857662006 尋找有志同道合的小夥伴, 互幫互助,羣裏還有不錯的視頻學習教程和PDF電子書! '''
In [21]: rc.rpush('tasklist','5')

Out[21]: 5L

In [22]: print(rc.lrange('tasklist',0,4))

[u'4', u'3', u'2', u'1', u'5']

三、從左邊取出元素怎麼取呢?

In [23]: rc.lpop("tasklist")

Out[23]: u'4'

In [24]: rc.lpop("tasklist")

Out[24]: u'3'

In [25]: print(rc.lrange('tasklist',0,4))

[u'2', u'1', u'5']

咱們會看到從左側已經取出了兩個元素了。剩下來[u’2’, u’1’, u’5’]

四、從右側呢?

固然就是rc.rpop()了

python對於redis的基礎使用和Redis做爲隊列的簡單使用就介紹這些

相關文章
相關標籤/搜索