zoukankan      html  css  js  c++  java
  • 转载——Python实现Reids任务队列(简单案例)

    首先得了解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)
    

    先运行第一个发布消息的脚本.

    来自:https://blog.csdn.net/t8116189520/article/details/91046746

    —————————————————————————拓展资料—————————————————————————————————

    http://doc.redisfans.com/list/lpush.html

    https://www.runoob.com/redis/redis-lists.html

    以上。

  • 相关阅读:
    hdoj 2063 过山车
    hdoj 2112 HDU Today
    hdoj 1874 畅通工程续
    hdoj 2544 最短路
    sound of the genuine
    复习webpack的常用loader
    node-sass安装报错
    react-debug
    react-router 4v 路由嵌套问题
    React 中使用sass
  • 原文地址:https://www.cnblogs.com/lovebkj/p/13410538.html
Copyright © 2011-2022 走看看