В Redis нет такой вещи, как пустой список, если список полностью обрабатывается RPOP, ключ удаляется.
Итак, должно произойти одно из следующих действий:
- Список
mylist
очищается (LPOP, RPOP, LREM, LTRIM и т. Д. c) до тех пор, пока он не станет пустым. - Ключ
mylist
удаляется (DEL, UNLINK, et c) - Срок действия ключа
mylist
истек (EXPIRE, EXPIREAT, et c) - Ключ выселяется
- Потеря данных происходит
Если redis-клиент не касается клавиши (1-3), то это должно быть 4 или 5.
Проверьте, есть ли у вас политика выселения установлен на вашем сервере с CONFIG GET maxmemory-policy
.
Потеря данных может происходить, если у вас нет persistence и ваш сервер перезагружен. Или если вы используете более одного экземпляра (кластер или часовой) и что-то не так. Вы можете использовать команду INFO
, чтобы увидеть:
- Раздел сервера:
redis_mode
и uptime_in_days
. - Раздел устойчивости: актуально, если время безотказной работы предполагает перезапуск сервера к моменту времени Вы потеряли ключ.
- Разделы памяти и статистики:
maxmemory_policy
и evicted_keys
сообщат нам, применяется ли политика - Разделы репликации и кластера: если мы до сих пор не знаем, начать расследование этого места.