Redis列表无缘无故被清空?

问题描述 投票:0回答:1

我正在redis中使用这样的python列表:

listitem = r.rpoplpush('mylist','mylist')

奇怪的是,该列表随机为空-例如,它将在一个月内不被清空的情况下工作,然后在一天之内被清空?我在这里想念什么?我的脚本中没有其他语句可以以任何方式触及该脚本。

python redis atomic atomicity
1个回答
0
投票

[Redis中没有空列表,如果将列表一直进行RPOP,则将删除该键。

所以,其中之一应该发生:

  1. 列表mylist一直被清空(LPOP,RPOP,LREM,LTRIM等),直到清空为止。
  2. 正在删除键mylist(DEL,UNLINK等)
  3. 密钥mylist已过期(EXPIRE,EXPIEAT等)
  4. 密钥正在被收回
  5. 正在发生数据丢失

如果没有Redis客户端触摸键(1-3),则必须为4或5。

查看服务器中是否使用eviction policy设置了一些CONFIG GET maxmemory-policy

如果没有persistence,并且重新启动服务器,则可能会发生数据丢失。或者,如果您使用的不止一个实例(集群或哨兵),则出问题了。您可以使用INFO命令查看:

  • 服务器部分:redis_modeuptime_in_days
  • 持久性部分:如果正常运行时间表明在丢失密钥时服务器已重新启动,则相关。
  • [内存和统计信息部分:maxmemory_policyevicted_keys会告诉我们是否正在应用策略]
  • 复制和群集部分:如果我们仍然没有线索,请开始调查此地点。
© www.soinside.com 2019 - 2024. All rights reserved.