使用過Redis做非同步佇列麼,你是怎麼用的?

2022-02-05 10:10:06 字數 381 閱讀 9093

一般使用list結構作為佇列,rpush生產訊息,lpop消費訊息。當lpop沒有訊息的時候,要適當sleep一會再重試。

如果對方追問可不可以不用sleep呢?

list還有個指令叫blpop,在沒有訊息的時候,它會阻塞住直到訊息到來。如果對方追問能不能生產一次消費多次呢?使用pub/sub主題訂閱者模式,可以實現1:n的訊息佇列。

如果對方追問pub/sub有什麼缺點?

在消費者下線的情況下,生產的訊息會丟失,得使用專業的訊息佇列如rabbitmq等。

如果對方追問redis如何實現延時佇列?

使用sortedset,拿時間戳作為score,訊息內容作為key呼叫zadd來生產訊息,消費者用zrangebyscore指令獲取n秒之前的資料輪詢進行處理。

使用過 Redis 做非同步佇列麼,你是怎麼用的?

一般使用 list 結構作為佇列,rpush 生產訊息,lpop 消費訊息。當 lpop 沒有 訊息的時候,要適當 sleep 一會再重試。如果對方追問可不可以不用 sleep 呢?list 還有個指令叫 blpop,在沒有訊息的時候,它會阻塞住直到訊息到來。如果對 方追問能不能生產一次消費多次呢?...

Redis實現非同步佇列

可以考慮利用list結構進棧出棧實現,那麼基本上你會需要以下步驟 description configonlinemodel author elegant date 2019 11 29 data public class configonlinemodel implements serializa...

使用Redis做過非同步佇列嗎,是如何實現的?

redis設計用來做快取的,但是由於它自身的某種特性使得它可以用來做訊息佇列。它有幾個阻塞式的api可以使用,正是這些阻塞式的api讓其有能力做訊息佇列 另外,做訊息佇列的其他特性例如fifo 先入先出 也很容易實現,只需要乙個list物件從頭取資料,從尾部塞資料即可 redis能做訊息佇列還得益於...