Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Redis密钥将被自动删除_Java_Redis_Jedis - Fatal编程技术网

Java Redis密钥将被自动删除

Java Redis密钥将被自动删除,java,redis,jedis,Java,Redis,Jedis,我们使用redis作为缓存。有些情况下,某些密钥被删除,我们无法找到原因。我将redis keyspace/keyevent forCONFIG SET notify keyspace events KEgxe放在我要放日志的通知上。但我在我的核心日志和redis日志中都找不到一些密钥。他们在RDBMS中有一些数据,所以我们确信这些密钥一定是进入Redis的。我们已经陷入了迷失的状态,我们应该在什么基础上调试它 Redis info说它有大约100mb的使用量,这在我看来还行。如何持久化数据和密

我们使用redis作为缓存。有些情况下,某些密钥被删除,我们无法找到原因。我将redis keyspace/keyevent for
CONFIG SET notify keyspace events KEgxe
放在我要放日志的通知上。但我在我的核心日志和redis日志中都找不到一些密钥。他们在RDBMS中有一些数据,所以我们确信这些密钥一定是进入Redis的。我们已经陷入了迷失的状态,我们应该在什么基础上调试它

Redis info说它有大约100mb的使用量,这在我看来还行。如何持久化数据和密钥

2个可能的原因:

  • 客户端无法写入Redis
  • 某些客户端删除这些丢失的密钥
  • 您可以尝试订阅有关密钥更改的所有内容:
    CONFIG SET notify keyspace events AKE
    ,并将这些更改记录到日志中以找出问题。

    2可能的原因:

  • 客户端无法写入Redis
  • 某些客户端删除这些丢失的密钥

  • 您可以尝试订阅有关密钥更改的所有内容:
    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
    禁止与其他主机的任何连接。