三、缺點
總結延遲佇列的實現方式有多種,這裡用redis 的zset 來實現
使用 zset
思路:我們給每個value設定score = 過期時間的時間戳
例如 當前時間戳是 1609154995707 , 60秒後過期,則可以設定score = 1609154995707 + 60 。
然後倒序排列,每次取出一批過期的資料,然後進行業務處理,並將其移除出zset
redis 命令:
示例:// 給每個key設定value時,指定score 為 要過期的時間戳
zadd key score member
// 返回按某個分數倒序排序的指定索引區間的member,value
zrevrange key start stop [withscores]
// 移除已經處理過的member1
zrem key member [member ...
]
**如下(示例):// 新增元素
zadd zset_test 1 one 2 two 3 three 4 four
// 從大到小取出兩個元素
zrevrange key 0
1 withscores
// 處理完後移出這兩個元素
zrem zset_test four three
**如下(示例):import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.
filterwarnings
('ignore'
)import ssl
ssl._create_default_https_context = ssl._create_unverified_context
該處使用的url網路請求的資料。data = pd.
read_csv
(data.
head()
)
基於redis的延遲訊息佇列設計
需求背景 佇列設計 目前可以考慮使用rabbitmq來滿足需求 但是不打算使用,因為目前太多的業務使用了另外的mq中介軟體。開發前需要考慮的問題?簡單定義乙個訊息資料結構 private string topic topic private string id 自動生成 全域性惟一 snowflak...
基於redis的延遲訊息佇列設計
需求背景 佇列設計 目前可以考慮使用rabbitmq來滿足需求 但是不打算使用,因為目前太多的業務使用了另外的mq中介軟體。開發前需要考慮的問題?簡單定義乙個訊息資料結構 private string topic topic private string id 自動生成 全域性惟一 snowflak...
基於redis的延遲訊息佇列設計
需求背景 佇列設計 目前可以考慮使用rabbitmq來滿足需求 但是不打算使用,因為目前太多的業務使用了另外的mq中介軟體。開發前需要考慮的問題?簡單定義乙個訊息資料結構 private string topic topic private string id 自動生成 全域性惟一 snowflak...