Redis实战:分布式队列与任务调度
import redis
# 连接Redis
redis_client = redis.StrictRedis(host='localhost', port=6379, db=0)
# 生产者将任务推送到队列
def enqueue_task(queue_name, task):
# 使用LPUSH将任务推送到队列的头部
redis_client.lpush(queue_name, task)
# 消费者从队列取出任务并执行
def process_queue(queue_name):
while True:
# 使用BRPOP阻塞地从队列取出任务,超时时间为5秒
task = redis_client.brpop(queue_name, timeout=5)
if task:
# 任务不为空,处理任务
process_task(task[1])
# 处理任务的具体逻辑
def process_task(task):
print(f"处理任务: {task}")
# 这里可以添加任务处理的具体代码
# 示例:使用队列和任务
queue_name = 'my-tasks'
enqueue_task(queue_name, 'task1')
enqueue_task(queue_name, 'task2')
process_queue(queue_name)
这段代码展示了如何使用Redis实现一个简单的分布式队列和任务调度系统。首先,我们定义了如何将任务推送到队列的enqueue_task
函数,以及如何处理队列中任务的process_queue
函数。process_queue
函数会阻塞地从队列中取出任务并处理它们。这个例子简单易懂,并且可以作为学习Redis实际应用的起点。
评论已关闭