2016-04-20 5 views
0

Я использую поток, и этот поток хранит данные с меткой времени в качестве ключа, чтобы прочитать ее через 10 секунд (это я использую для отправки push-уведомлений). Мне было интересно, могу ли я запросить redis для списка временных меток в определенном диапазоне.Python redis получить список на основе timestamp

Например: у меня есть поток, который будет получать эти данные из redis каждые 10 секунд. Скажем, есть 7 новых сообщений, это означает, что через 10 секунд я бы хотел отправить 7 новых push-уведомлений для сообщений, которые были размещены за это время (я проверю, если они уже прочитаны, но это другой случай).

Просто интересно, я вообще не знаком с 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

Thank s, это именно то, что я искал – dnsko

Смежные вопросы