0
点赞
收藏
分享

微信扫一扫

利用redis做一个小型分布式任务

素的盐 2022-05-19 阅读 58

redis是一个缓存于内存的数据库,这次可以利用redis的消息队列,从mysql数据库读取数据,并队列依次获取数据库内容。形成一个先进先出的任务队列,先到先得的特点。先进意思就是生产,先出就是产出。从生产和产出两个方面去了解一下。

创建redis连接对象


利用redis做一个小型分布式任务_表数据

db_r = redis.ConnectionPool(host='127.0.0.1',port=6379,db=0)


r = redis.Redis(connection_pool=db_r)


生产


创建生产product.py文件,利用redis中列表数据类型,​​l.lpush key value1 value2 values3 ....​​命令,将任务数据放到redis列表中,不够在放入redis缓存列表中,循环放入的时候需要判断是否有重复值。利用r.lrange命令,获取redis列表,判断该数据是否在redis列表中。


利用redis做一个小型分布式任务_redis_02


产出


创建产出文件,主要利用redis列表数据阻塞弹出命令,获取redis列表数据,如果列表有数据,就会依次弹出数据,如果没有,就会一直进行阻塞等待。


利用redis做一个小型分布式任务_数据_03


最后生成的cosume.py文件,可以进行多次运行,也可以放在其他服务器上运行,或者多线程运行。这样可以依次从队列中取出数据,不会造成数据取出重复的问题。


举报

相关推荐

0 条评论