当前位置: 首页 > 知识库问答 >
问题:

在BGSAVE之后,Redis立即删除我的所有密钥

通和裕
2023-03-14

我正在Windows服务器x64上使用redis 2.6.12,配置为:maxmemory 45GB,内存策略易失性ttl(我所有的密钥都有ttl,但它们永远不会过期,因为过期时间是几年后)。每天有一次,在某个时间,我使用BGSAVE创建转储。内存大部分时间都是满的,因为我总是添加新的键,而最旧的键被逐出。

问题是,每隔一段时间,在数据库保存后,redis也会立即删除我的所有密钥,内存从45GB下降到0GB,从50000个密钥下降到0个密钥。

为什么会发生这种情况,我如何在后台保存数据库而不删除所有密钥?

以下是redis.log文件的一部分:

需要帮忙吗?

共有1个答案

程钧
2023-03-14

因为这看起来像一个bug,所以我建议:

  • 安装Cygwin(这是fork()需要的)

(注意,dmajkic的叉子与2.4一样旧)

 类似资料:
  • 问题内容: 我想删除与“用户*”匹配的键。 我如何在Redis命令行中做到这一点? 问题答案: 此功能目前无法一口气完成(请参阅文档中的注释)。不幸的是,您只能使用,遍历结果,然后使用来删除每个结果。 怎么样使用bash来帮助? 要逐步执行: -获取所有键并使用awk删除不需要的多余文本。 -为每一个创建一个echo语句以将其删除。 -使用DEL语句,然后将它们传递回cli。 不建议这样做是最好的

  • 我正在使用Python和boto3来处理S3。 我列出了一个S3桶,并通过前缀过滤: 这给了我一个S3对象的iterable。 如果打印对象,我会看到: s3.对象摘要(bucket_name='validation',key=u'0000-00-00/1463665359.Vfc01I205aeM627249') 当我去拿尸体时,虽然我得到了一个例外: botocore.exceptions.C

  • 我有大量数据,需要清理。B列为关键列;如果B列中有空值,则可以删除该行的其余部分。 我在B列上排序,所有的空值都在表的底部。在C-BZ列中有数据,但在B中没有。我想自动识别B中最后一个非空值(假设它是单元格B3841),然后删除工作表底部的3842行。我的数据集每天都在变化。 下面的代码对B列进行排序,然后删除所有完全空的行。我还想删除在B列中为null但在C或D或任何其他行中可能有数据的行。

  • 问题内容: 我要删除所有密钥。我希望一切都消灭,然后给我一个空白的数据库。 有没有办法在Redis客户端中做到这一点? 问题答案: 使用redis-cli: FLUSHDB –从连接的当前数据库中删除所有密钥。 FLUSHALL –从所有数据库中删除所有键。 例如,在您的shell中:

  • 问题内容: 我有一个由三部分组成的字符串。我希望字符串是(更改),单独的部分(不更改)和最后一个更改的部分。我要删除分隔部分和结尾部分。分离的部分是“-”,所以我想知道的是,是否有办法删除字符串中一定部分之后的所有内容。 这种情况的一个示例是,如果我想将其转换为:“ Stack Overflow-一个地方来问问题”:任何帮助表示赞赏! 问题答案: 例如,您可以这样做: 要么 (并添加相关的错误处理

  • 有什么方法可以立即删除GCP项目吗?