轉載——Python實現Reids任務佇列(簡單案例)
阿新 • • 發佈:2020-07-31
首先得了解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
以上。