python中怎么操作redis消息队列

redis 是一个 Key-Value 数据库,Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型。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'
Redis简单操作

我们可以利用 Redis 类中提供的连接池方式来管理和操作 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"

那么 接下来介绍redis详细项目使用的内容,大家不要觉得介绍的内容扩散太大。

最近在作一个任务系统,任务写入是不定时的,我们需要用一个程序去定期消费这些任务,必须是有先后顺序的,而且是前一个任务确认执行完后,才会去执行下一个。

Python实战操作Redis消息队列,提高数据处理效率

怎么办呢?用队列啊,对吧!用什么队列,怎么用?

介绍下为什么要用redis来作消息处理:

简单说,redis支持两种消费模式,一种发布-订阅模式,及一个消息会被多个消费者处理(简单说类似是一个广播消息,所有人都会接收)。显然,在我的系统中不适用这种方法,相反地,系统需要采用队列模式,以便按照任务到达的先后顺序进行优先处理。那么对队列用什么类型得数据库结构来作呢?

先得聊聊list

list 这个数据类型,在python里是一个列表,在redis里就是一个有序队列(或者说数据链表)了。

类型图示如下:

大家看了这个结构就可以清楚了,我们可以利用list的数据接口模式,设计从左端和右端都可以对list进元素的同向处理(满足队列的特性先到先出)。

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



Redis消息队列是一种高效的多线程处理流程的方法。Python作为一种高效的编程语言,也可以用来操作Redis消息队列,提高数据处理效率。那么接下来,本文将为大家介绍Python如何操作Redis消息队列。
一、创建Redis消息队列
首先,我们需要先连接到Redis服务器,并创建一个Redis对象。接着,我们需要创建一个名为\"queue\"的Redis消息队列,并指定消息队列的最大长度。具体实现如下:
```python
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
queue = r.limited('queue', maxlen=10000)
```
二、将任务添加到Redis消息队列
创建消息队列后,接下来我们需要将需要处理的任务添加到消息队列中。具体操作如下:
```python
def add_task(task):
queue.rpush(task)
```
三、从Redis消息队列中获取任务
第三个步骤是从Redis消息队列中获取任务进行处理。我们需要不断地从Redis消息队列中获取任务并进行处理,直到消息队列为空。具体实现如下:
```python
def get_task():
task = queue.lpop()
if task:
# 处理任务
pass
```
四、清空Redis消息队列
最后一个步骤是清空Redis消息队列。当我们需要重新开始处理数据时,可以使用该函数清空Redis消息队列。具体实现如下:
```python
def clear_queue():
queue.delete()
```
以上便是Python操作Redis消息队列的过程。使用Redis消息队列可以有效地提高数据处理效率,是一种非常实用的技术手段。