我们的钥匙在一段时间内丢失了,我们找不到问题所在。
我们同时使用 AOF 和 RDB,配置如下:
关系数据库:
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
AOF:
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
如您所见,没有什么花哨的……都是redis的默认值。
我试图创建密钥并重新启动服务器。此时钥匙还在。我无法确定钥匙何时丢失或为什么丢失?日志文件没有帮助,因为我不知道在日志中或何时查询什么。
我所知道的是我的钥匙每隔大约一个月丢失一次。
我如何在redis中调试此类问题?
前言:Redis 中的键不会被删除,除非明确请求或服务器配置了逐出策略(并且 RAM 受到压力)。
遗憾的是,丢失密钥的最常见原因是安全性,或者更确切地说是缺乏安全性。脚本小子、leet haxors 和普通坏人利用未受保护的服务器造成各种破坏。您需要做的第一件事是确保服务器受到适当的保护(即配置了密码并且不向外界公开)。有关详细信息,请参阅https://redis.io/topics/security
在排除攻击和驱逐策略配置后,唯一剩下的解释是一段流氓代码。从服务器端,您可以尝试使用
MONITOR
命令或通过配置键空间事件并订阅相关消息来跟踪此行为。