Heim  >  Artikel  >  Datenbank  >  So bedienen Sie die Redis-Nachrichtenwarteschlange in Python

So bedienen Sie die Redis-Nachrichtenwarteschlange in Python

WBOY
WBOYnach vorne
2023-05-28 12:55:311727Durchsuche

redis ist eine Schlüsselwertdatenbank, die String (String), Liste (Liste), Set (Satz), Zset (geordneter Satz), Hash (Hash-Typ) und andere Typen unterstützt.

Redis-Dienst

  1、安装

  yum install redis

  2、 python安装支持模块

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

  3、 和redis的简单直接交互

  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 einfacher Betrieb

Wir können die in der Redis-Klasse bereitgestellte Verbindungspoolmethode verwenden, um Redis-Interaktionen zu verwalten und zu betreiben.

  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 ,指定数据存取的DB

  redis.conf中设置了db的数量,那么redis的数据库名也为0 到15,如下:

  databases 16

  指定使用那个数据库名,我们通过如下的方式,就可以了:

  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"

Dann stellen wir die detaillierte Projektnutzung von Redis vor. Ich habe nicht das Gefühl, dass der vorgestellte Inhalt zu diffus ist.

Ich arbeite derzeit an einem Aufgabensystem. Wir müssen ein Programm verwenden, um diese Aufgaben regelmäßig zu verarbeiten. Die nächste Aufgabe wird erst ausgeführt, nachdem die vorherige Aufgabe bestätigt wurde einen hingerichtet.

Was ist zu tun? Welche Warteschlange soll verwendet werden und wie wird sie verwendet?

Stellen Sie vor, warum Redis für die Nachrichtenverarbeitung verwendet wird:

Einfach ausgedrückt unterstützt Redis zwei Verbrauchsmodelle, eines ist der Publish-Subscribe-Modus , und eine Nachricht wird von mehreren Verbrauchern verarbeitet (einfach ausgedrückt ist es wie eine Broadcast-Nachricht, jeder wird sie empfangen). Offensichtlich ist dieser Ansatz in meinem System nicht anwendbar. Stattdessen muss das System einen Warteschlangenmodus übernehmen, um Aufgaben in der Reihenfolge ihres Eintreffens zu priorisieren. Welche Art von Datenbankstruktur sollte also zum Erstellen einer Warteschlange verwendet werden?

Zuerst müssen wir über die Liste sprechen.

list Dieser Datentyp ist eine Liste in Python und eine geordnete Warteschlange (oder datenverknüpfte Liste) in Redis.

Das Typdiagramm lautet wie folgt: So bedienen Sie die Redis-Nachrichtenwarteschlange in Python

Jeder kann es klar verstehen, nachdem er sich diese Struktur angesehen hat. Wir können den Datenschnittstellenmodus der Liste verwenden, um die Verarbeitung der Elemente in der Liste sowohl vom linken als auch vom rechten Ende aus in die gleiche Richtung zu gestalten (Erfüllen Sie die Merkmale der Warteschlange: Wer zuerst kommt, mahlt zuerst).

  1、从左端插入元素

  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插入到最左边。

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

  我们会看到从左侧已经取出了两个元素了。剩下来[u'2', u'1', u'5']

  4、从右侧呢?

  当然就是rc.rpop()了

Das obige ist der detaillierte Inhalt vonSo bedienen Sie die Redis-Nachrichtenwarteschlange in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen