2016-04-20 49 views
0

我正在使用一個流,並且該流存儲帶有時間戳記的數據作爲密鑰,以在10秒鐘後(我正在使用此工具發送推送通知)將其讀回。我想知道是否可以在特定範圍內查詢redis以獲取時間戳列表。基於時間戳的Python redis獲取列表

例如:我有一個線程正在運行,它將每隔10秒從redis獲取數據。假設有7條新消息被放置,這意味着在10秒鐘後,我想發送7條新的推送通知,用於放置那段時間的消息(我將檢查它們是否已被讀取,但這是另一種情況)。

只是想知道,我不熟悉redis,所以我希望任何人都知道。我正在使用this

回答

1

您可以使用排序集,其中每個成員的分數將是unix時間戳。

要存儲一個新的消息,使用ZADD

ZADD myzset <timestamp> <data> 

然後拿到,因爲給定的時間存儲在郵件列表,使用ZRANGEBYSCORE

# return the messages posted since reference_timestamp 
ZRANGEBYSCORE myzset <reference_timestamp> +inf 

可以後刪除郵件他們已發送,使用ZREMRANGEBYSCORE

# delete the messages older than reference_timestamp (including those at timestamp) 
ZREMRANGEBYSCORE myzset -inf <reference_timestamp> 
+0

謝謝這正是我所期待的 – dnsko