Redis 列表无故清空?
Redis list getting emptied without any reason?
我正在 python
中使用这样的 redis
列表:
listitem = r.rpoplpush('mylist','mylist')
奇怪的是,列表随机变空 - 例如它可以工作一个月而不会被清空,然后在一个晴朗的日子被清空?我在这里错过了什么?我的脚本中没有其他语句以任何方式触及脚本。
Redis 中不存在空列表,如果一个列表一直被 RPOP,则键被删除。
所以,其中一个应该发生:
- 列表
mylist
正在清空(LPOP、RPOP、LREM、LTRIM 等)直到清空。
- 正在删除密钥
mylist
(DEL、UNLINK 等)
- 密钥
mylist
即将过期(EXPIRE、EXPIREAT 等)
- 正在逐出密钥
- 正在发生数据丢失
如果没有 redis-client 正在触摸键 (1-3),则它必须是 4 或 5。
查看您的服务器中是否有一些 eviction policy 设置为 CONFIG GET maxmemory-policy
。
如果您没有 persistence 并重新启动服务器,则可能会发生数据丢失。或者,如果您使用多个实例(集群或哨兵)并且出现问题。可以使用INFO
命令查看:
- 服务器部分:
redis_mode
和 uptime_in_days
。
- 持久性部分:如果正常运行时间表明服务器在您丢失密钥时重新启动,则相关。
- 内存和统计部分:
maxmemory_policy
和 evicted_keys
将告诉我们是否正在应用策略
- 复制和集群部分:如果我们仍然没有线索,请开始调查此地点。
我正在 python
中使用这样的 redis
列表:
listitem = r.rpoplpush('mylist','mylist')
奇怪的是,列表随机变空 - 例如它可以工作一个月而不会被清空,然后在一个晴朗的日子被清空?我在这里错过了什么?我的脚本中没有其他语句以任何方式触及脚本。
Redis 中不存在空列表,如果一个列表一直被 RPOP,则键被删除。
所以,其中一个应该发生:
- 列表
mylist
正在清空(LPOP、RPOP、LREM、LTRIM 等)直到清空。 - 正在删除密钥
mylist
(DEL、UNLINK 等) - 密钥
mylist
即将过期(EXPIRE、EXPIREAT 等) - 正在逐出密钥
- 正在发生数据丢失
如果没有 redis-client 正在触摸键 (1-3),则它必须是 4 或 5。
查看您的服务器中是否有一些 eviction policy 设置为 CONFIG GET maxmemory-policy
。
如果您没有 persistence 并重新启动服务器,则可能会发生数据丢失。或者,如果您使用多个实例(集群或哨兵)并且出现问题。可以使用INFO
命令查看:
- 服务器部分:
redis_mode
和uptime_in_days
。 - 持久性部分:如果正常运行时间表明服务器在您丢失密钥时重新启动,则相关。
- 内存和统计部分:
maxmemory_policy
和evicted_keys
将告诉我们是否正在应用策略 - 复制和集群部分:如果我们仍然没有线索,请开始调查此地点。