环境:
python3
库:
redis
首先得了解redis数据库的lpush和brpop命令:
1.Redis
Lpush
命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
注意:
在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值
2.Redis
Brpop
命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
接下来我们写三个脚本,
第一个是负责发布任务的脚本,即不断往redis存入消息
import redis
import json
import time
# 链接数据库
redis_queue = redis.Redis(host='localhost', port=6379)
# 定义初始值a
a = 0
# 往redis存入{"number":a},其中a的值是递增的,当a=100时,停止存入
while a != 100:
dic = {"number": a}
a += 1
print("开始存入{'number':%s}"%a)
redis_queue.lpush('somekey', json.dumps(dic))
# 休息0.5秒
time.sleep(0.5)
第二个和第三个脚本内容相同,功能是负责从redis获取消息。
import redis
import time
# 链接数据库
redis_queue = redis.Redis(host='localhost', port=6379 )
# 每隔一秒从列表中获取消息
# 如果timeout=0,消息队列为空时,程序会一直阻塞
while True:
task=redis_queue.brpop('somekey',timeout=3)
if not task:
print("3秒内没有获取到消息,我要中断循环了")
break
# 打印消息
print(task[1])
time.sleep(1)
我们先运行第一个发布消息的脚本,效果如下:
接下来我们分别启动2和3脚本,开始获取消息
运行效果如下:
版权声明:本文为t8116189520原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。