日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python 消息队列 get是从队首还是队尾取东西_从零开始Python对redis作为消息队列的使用...

發(fā)布時(shí)間:2023/12/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 消息队列 get是从队首还是队尾取东西_从零开始Python对redis作为消息队列的使用... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Redis 服務(wù)

1、安裝

yum install redis

2、 python安裝支持模塊

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

3、 和redis的簡(jiǎn)單直接交互

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簡(jiǎn)單操作

對(duì)于和Redis的交互, Redis的類中提供了連接池的方式,我們可以通過(guò)連接池管理并操作Redis。

1、連接池建立,利用連接池連接

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'

2、redis中DB ,指定數(shù)據(jù)存取的DB

redis.conf中設(shè)置了db的數(shù)量,那么redis的數(shù)據(jù)庫(kù)名也為0 到15,如下:

databases 16

指定使用那個(gè)數(shù)據(jù)庫(kù)名,我們通過(guò)如下的方式,就可以了:

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

這樣就將數(shù)據(jù)庫(kù)寫入到db3了,如何驗(yàn)證呢?我們從服務(wù)端來(lái)認(rèn)證最直接,如下:

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

127.0.0.1:6379> SELECT 3

OK

127.0.0.1:6379[3]> KEYS * //查看db 3這個(gè)庫(kù)下所有的key

1) "imooccc"

那么 接下來(lái)介紹redis詳細(xì)項(xiàng)目使用的內(nèi)容,大家不要覺(jué)得介紹的內(nèi)容擴(kuò)散太大。

最近在作一個(gè)任務(wù)系統(tǒng),任務(wù)寫入是不定時(shí)的,我們需要用一個(gè)程序去定期消費(fèi)這些任務(wù),必須是有先后順序的,而且是

前一個(gè)任務(wù)確認(rèn)執(zhí)行完后,才會(huì)去執(zhí)行下一個(gè)。

怎么辦呢?用隊(duì)列啊,對(duì)吧!用什么隊(duì)列,怎么用?

介紹下為什么要用redis來(lái)作消息處理:

簡(jiǎn)單說(shuō),redis支持兩種消費(fèi)模式,一種發(fā)布-訂閱模式,及一個(gè)消息會(huì)被多個(gè)消費(fèi)者處理(簡(jiǎn)單說(shuō)類似是一個(gè)廣播消息,所有人都會(huì)接收)。很明顯我得系統(tǒng)中不需要這么用,系統(tǒng)里邊就需要隊(duì)列模式,及先到的任務(wù)優(yōu)先處理。那么對(duì)隊(duì)列用什么類型得數(shù)據(jù)庫(kù)結(jié)構(gòu)來(lái)作呢?

四、先得聊聊list

list 這個(gè)數(shù)據(jù)類型,在python里是一個(gè)列表,在redis里就是一個(gè)有序隊(duì)列(或者說(shuō)數(shù)據(jù)鏈表)了。

類型圖示如下:

大家看了這個(gè)結(jié)構(gòu)就可以清楚了,我們可以利用list的數(shù)據(jù)接口模式,設(shè)計(jì)從左端和右端都可以對(duì)list進(jìn)元素的同向處理(滿足隊(duì)列的特性先到先出)。

1、從左端插入元素

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

Out[10]: 3L

打印輸出內(nèi)容,如下:

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

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

類似的從左測(cè)插入的方法還有l(wèi)pushx(name,value),區(qū)別只有當(dāng)name存在才將value插入到最左邊。

2、從右邊插入元素

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']

3、從左邊取出元素怎么取呢?

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']

我們會(huì)看到從左側(cè)已經(jīng)取出了兩個(gè)元素了。剩下來(lái)[u'2', u'1', u'5']

4、從右側(cè)呢?

當(dāng)然就是rc.rpop()了

python對(duì)于redis的基礎(chǔ)使用和Redis作為隊(duì)列的簡(jiǎn)單使用就介紹這些,

python的工程里邊如何更好封裝redis庫(kù)的連接和方法,

及python很多的知識(shí)內(nèi)容,大家可以關(guān)注我,我將提供更多的內(nèi)容!

本文由 帝一博客 原創(chuàng)發(fā)布。用戶在本站發(fā)布的原創(chuàng)內(nèi)容(包括但不僅限于回答、文章和評(píng)論),著作權(quán)均歸用戶本人所有。獨(dú)家文章轉(zhuǎn)載,請(qǐng)聯(lián)系郵箱:17762131@qq.com。獲得授權(quán)后,須注明本文地址:

https://www.d1blog.com/pythonpachong/1121.html

總結(jié)

以上是生活随笔為你收集整理的python 消息队列 get是从队首还是队尾取东西_从零开始Python对redis作为消息队列的使用...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。