Python使用redis的消息队列

  • 日期:08-13
  • 点击:(1080)


厚技术说我想昨天分享

image.php?url=0MmKmLKm4w

Redis服务

1,安装

百胜安装redis

2,python安装支持模块

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

3.与redis的简单直接交互

在[1]:中导入redis

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

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

Out [5]: True

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

Out [7]: u'jeson'

Redis简单操作

为了与Redis交互,Redis的类提供了一种连接池的方法。我们可以通过连接池管理和运行Redis。

1,使用连接池连接建立连接池

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

在[9]:中,rc=redis.Redis(connection_pool=connpool)

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

Out [10]: True

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

Out [11]: u''

2,redis DB,指定数据访问DB

Redis.conf设置db的数量,然后redis数据库名称也是0到15,如下所示:

数据库16

指定要使用的数据库名称,我们可以通过以下方式执行此操作:

在[29]: connpool=redis.ConnectionPool(host='192.168.8.237',port=6379,decode_responses=True,db=3)

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

Out [30]: True

这会将数据库写入db3,如何验证呢?我们直接从服务器进行身份验证,如下所示:

使用redis-cli(redis附带的工具)登录服务器并查看写入的密钥。

127.0.0.1: 6379>选择3

127.0.0.1: 6379 [3]> KEYS * //查看db 3库下的所有键

1)'imooccc'

然后,让我们介绍Redis详细项目的内容。不要以为引言的内容太大了。

最近,我正在研究一个任务系统。任务写作不规律。我们需要使用程序来定期使用这些任务。它必须是顺序的,并且在确认上一个任务之后将执行上一个任务。

我该怎么办?正确使用队列!使用什么队列,如何使用它?

介绍为什么要使用redis进行消息处理:

简而言之,redis支持两种消费模式,一种发布 - 订阅模型,以及由多个消费者处理的消息(只是每个人都会收到的广播消息)。显然我不需要在系统中使用它,系统内部需要队列模式,先处理先到先得的任务。那么队列使用什么类型的数据库结构?

有一个聊天列表

列表此数据类型是Python中的列表,是redis中的有序队列(或数据链接列表)。

类型如下所示:

image.php?url=0MmKmLXIOX

你可以清楚地看到这个结构。我们可以使用列表的数据接口模式从左端和右端设计列表元素的相同方向处理(先到先得出队列特征)。

1.从左端插入元素

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

输出[10]: 3L

打印内容如下:

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

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

从左侧插入的类似方法是lpushx(name,value),不同之处在于只有在名称存在时才将值插入到最左边。

2.插入右侧的元素

在[21]: rc.rpush('tasklist','5')

输出[21]: 5L

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

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

3.如何从左侧获取元素?

在[23]: rc.lpop('tasklist')

Out [23]: u'4'

在[24]: rc.lpop('tasklist')

Out [24]: u'3'

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

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

我们将看到从左侧删除了两个元素。其余的[u'2',u'1',u'5']

4.从右边?

当然是rc.rpop

Python介绍了redis的基本用法以及简单地使用Redis作为队列。

收集报告投诉