我在建造類似延遲線的東西:一個進程RPUSHes對象到列表中,另一個LPOP按照相同的順序排列它們。如何在Redis中實現條件流行併發友好?
訣竅是對象只能在添加後一小時從列表中彈出。我可以用這個時間戳。所有項目的延遲是相同的,永遠不會改變。
現在我該如何以併發友好的方式實現彈出窗口(以便在幾個工作人員訪問該列表時仍能正常工作)?我可以拿出一個項目,檢查時間戳,如果還爲時過早,就把它放回列表中。但是如果有幾個工人同時做這件事,它可能會混淆物品的順序。我可以檢查第一個項目,只有當它到期時纔會彈出。但另一名工作人員可能會彈出它,所以我彈出錯誤的。
我應該使用WATCH命令嗎?怎麼樣?我應該使用排序集而不是列表嗎?幫助讚賞!
搞砸了訂單在這種情況下,如果到期的物品與尚未到期的物品進行交換,那麼這很重要。在最壞的情況下,它可能會延遲一小時。 但是,每分鐘清單的想法聽起來很有趣。我會更多地考慮這個 – travelboy
的確如此,但是如果你有足夠的物品被加入需要多個工人,那麼最壞的情況是不太可能的。如有必要,您可以使用LRANGE和LPOP的組合來檢查是否有任何到期的項目,然後再刪除一個進行處理。 –