Maison >base de données >Redis >Comment faire fonctionner la file d'attente de messages Redis en python

Comment faire fonctionner la file d'attente de messages Redis en python

WBOY
WBOYavant
2023-05-28 12:55:311806parcourir

redis est une base de données Key-Value. Value prend en charge la chaîne (string), la liste (liste), l'ensemble (set), le zset (ensemble ordonné), le hachage (type de hachage) et d'autres types.

Service Redis

  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'

Opération simple Redis

Nous pouvons utiliser la méthode de pool de connexions fournie dans la classe Redis pour gérer et exploiter les interactions 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 ,指定数据存取的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"

Présentons ensuite l'utilisation détaillée du projet de redis. Ne pensez pas que le contenu introduit est trop diffus.

Je travaille actuellement sur un système de tâches. L'écriture des tâches est irrégulière. Nous devons utiliser un programme pour utiliser ces tâches régulièrement. Il doit y avoir une séquence, et la tâche suivante ne sera exécutée qu'après confirmation de la tâche précédente. exécuté un.

Que faire ? Utiliser une file d'attente, n'est-ce pas ! Quelle file d'attente utiliser et comment l'utiliser ?

Présentez pourquoi Redis est utilisé pour le traitement des messages :

En termes simples, Redis prend en charge deux modèles de consommation, l'un étant le mode publication-abonnement. , et un message sera traité par plusieurs consommateurs (en termes simples, c'est comme un message diffusé, tout le monde le recevra). Évidemment, cette approche n'est pas applicable dans mon système, le système doit plutôt adopter un mode file d'attente afin de hiérarchiser les tâches dans l'ordre dans lequel elles arrivent. Alors, quel type de structure de base de données doit être utilisé pour créer une file d'attente ?

Nous devons d'abord parler de liste

list Ce type de données est une liste en python, et c'est une file d'attente ordonnée (ou liste liée aux données) en redis.

Le diagramme de type est le suivant : Comment faire fonctionner la file dattente de messages Redis en python

Tout le monde peut comprendre clairement après avoir regardé cette structure. Nous pouvons utiliser le mode d'interface de données de la liste pour concevoir le même traitement de direction des éléments de la liste à partir des extrémités gauche et droite. (répondant aux caractéristiques de la file d'attente en premier. Premier arrivé, premier sorti).

  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()了

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer