Java Redis密钥将被自动删除
我们使用redis作为缓存。有些情况下,某些密钥被删除,我们无法找到原因。我将redis keyspace/keyevent forJava Redis密钥将被自动删除,java,redis,jedis,Java,Redis,Jedis,我们使用redis作为缓存。有些情况下,某些密钥被删除,我们无法找到原因。我将redis keyspace/keyevent forCONFIG SET notify keyspace events KEgxe放在我要放日志的通知上。但我在我的核心日志和redis日志中都找不到一些密钥。他们在RDBMS中有一些数据,所以我们确信这些密钥一定是进入Redis的。我们已经陷入了迷失的状态,我们应该在什么基础上调试它 Redis info说它有大约100mb的使用量,这在我看来还行。如何持久化数据和密
CONFIG SET notify keyspace events KEgxe
放在我要放日志的通知上。但我在我的核心日志和redis日志中都找不到一些密钥。他们在RDBMS中有一些数据,所以我们确信这些密钥一定是进入Redis的。我们已经陷入了迷失的状态,我们应该在什么基础上调试它
Redis info说它有大约100mb的使用量,这在我看来还行。如何持久化数据和密钥 2个可能的原因:
CONFIG SET notify keyspace events AKE
,并将这些更改记录到日志中以找出问题。2可能的原因:
您可以尝试订阅有关密钥更改的所有内容:
CONFIG SET notify keyspace events AKE
,并将这些更改记录到日志中以解决问题。对于第一点,至少对于某些密钥,我确信它们在redis中,正如我所看到的那样。对于第二点,我使用了KEgxe
进行日志记录,我认为这对于del来说已经足够了,expire。。。所有事件都将记录为日志AKE
。无论如何,我会把AKE
放进去,小心。谢谢.hi@for_stack,我也尝试了AKE
,但在日志中找不到任何内容。情况越来越糟了。我有一些疑问,机器或redis被重新启动,但在这种情况下,我应该得到连接错误。若redis对密钥数量或大小有最大限制,那个么策略就是lru。我的问题是,如果redis“清除”了这些键,这是否也会进入键空间notifications@theGamblerRises如果redis过期或退出,它会发送通知。您的应用程序是否可能意外调用了flushdb
或flushall
?由于这些命令影响的键太多,Redis不会发送任何通知。你是对的。我们的端口是开放的,一些外部ip地址将被释放。我必须设置监视器并记录这些值。吸取的教训。Thanks@theGamblerRises好的,有人故意删除了那些键。通常,您应该限制对Redis的访问。例如,使用--bind 127.0.0.1
来禁止与其他主机的任何连接。对于第一点,至少对于某些键,我确信它们在redis中,正如我所看到的那样。对于第二点,我使用了KEgxe
进行日志记录,我认为这对于del来说已经足够了,expire。。。所有事件都将记录为日志AKE
。无论如何,我会把AKE
放进去,小心。谢谢.hi@for_stack,我也尝试了AKE
,但在日志中找不到任何内容。情况越来越糟了。我有一些疑问,机器或redis被重新启动,但在这种情况下,我应该得到连接错误。若redis对密钥数量或大小有最大限制,那个么策略就是lru。我的问题是,如果redis“清除”了这些键,这是否也会进入键空间notifications@theGamblerRises如果redis过期或退出,它会发送通知。您的应用程序是否可能意外调用了flushdb
或flushall
?由于这些命令影响的键太多,Redis不会发送任何通知。你是对的。我们的端口是开放的,一些外部ip地址将被释放。我必须设置监视器并记录这些值。吸取的教训。Thanks@theGamblerRises好的,有人故意删除了那些键。通常,您应该限制对Redis的访问。例如,使用--bind 127.0.0.1
禁止与其他主机的任何连接。