延遲佇列 redis

2021-10-13 07:25:12 字數 1170 閱讀 8647

三、缺點

總結延遲佇列的實現方式有多種,這裡用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

**如下(示例):

data = pd.

read_csv

('')print

(data.

head()

)

該處使用的url網路請求的資料。

基於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...