redis 佇列 redis 延時佇列

2021-10-11 20:05:39 字數 1303 閱讀 9555

定時發公告

使用者下單30分鐘後未付款自動關閉訂單

使用者下單後延時簡訊提醒

延時關閉空閒客戶端連線

使用redis提供的有序資料結構zset,把過期時間戳作為score。

public void produce(string topic, string msg, date date) 生產訊息:{},於{}消費", topic, msg, date);

long addsuccess = stringredistemplate.opsforset().add("topiclist", topic);

if (addsuccess != null && addsuccess > 0) ", topic);

string msg;

try catch (querytimeoutexception e) 監聽到訊息:{}", topic, msg);

if (msg != null) catch (exception e) ,topic:{}", msg, topic);

produce(topic, msg, new date(system.currenttimemillis() + 60000));

} while (true);

單元測試

@slf4j

@runwith(springrunner.class)

@springboottest

public class redisdelayqueuetest 】收到訊息:{}","topic0",msg);

return true;

}); redisdelayqueue.consumer("topic1", (msg)->】收到訊息:{}","topic1",msg);

return true;

redisdelayqueue.consumer("topic2", (msg) -> 】收到訊息:{}", "topic2", msg);

return true;

timeunit.minutes.sleep(10);

Redis 延時佇列

延時佇列可以通過 redis 的 zset 有序列表 來實現。我們將訊息序列化成乙個字串作為 zset 的 value,這個訊息的到期處理時間作為 score,然後用多個執行緒輪詢 zset 獲取到期的任務進行處理,多個執行緒是為了保障可用性,萬一掛了乙個執行緒還有其它執行緒可以繼續處理。因為有多個...

Redis 非同步訊息佇列與延時佇列

非同步訊息佇列 說道訊息佇列,你肯定會想到kafka rabbitmq等訊息中介軟體,這些專業的訊息中介軟體提供了很多功能特性,當然他的部署使用維護都是比較麻煩的。如果你對訊息佇列沒那麼高要求,想要輕量級的,使用redis就沒錯啦。redis通過list資料結構來實現訊息佇列.主要使用到如下命令 廢...

Redis應用 非同步訊息佇列與延時佇列

說道訊息佇列,你肯定會想到kafka rabbitmq等訊息中介軟體,這些專業的訊息中介軟體提供了很多功能特性,當然他的部署使用維護都是比較麻煩的。如果你對訊息佇列沒那麼高要求,想要輕量級的,使用redis就沒錯啦。redis通過list資料結構來實現訊息佇列.主要使用到如下命令 廢話補不多說上 r...