gpt4 book ai didi

configuration - 配置 Redis 以仅保留过去一天的 key

转载 作者:可可西里 更新时间:2023-11-01 11:12:50 26 4
gpt4 key购买 nike

我有一个应用程序将 key 写入 Redis 而未指定 key 的过期时间。无法更改应用程序,但我想将 Redis 配置为仅保留过去 24 小时的 key 并删除旧 key 。

怎么做?

最佳答案

据我所知,没有办法将 Redis 配置为仅保留过去 24 小时的 key 并删除旧 key ,正如您所说,至少您设置了 TTL,但您可以使用一个技巧。

我假设您不能更改您告诉我们的应用程序中的任何内容...因此您将需要创建一个脚本/命令/应用程序,每隔一个小时间间隔连接到 Redis 服务器,比方说,1 分钟。时间间隔将取决于您认为 Redis 中平均有多少键。

应用程序很简单,您只需遍历所有键并使用三个命令:

  • KEYS * -> 获取完整的键列表
  • TTL keyName -> 知道 key 是否已经分配了到期时间。如果没有,它将返回-1
  • EXPIRE keyName 86400 -> 如果 key 没有分配 TTL,则设置 24 小时的 TTL

因此,当您第一次运行该命令时,Redis 中的所有当前键都需要 24 小时的 TTL,在此之后它们将被删除。该命令的第二次执行将只为第一次执行该命令时不存在的新 key 分配 24 小时 TTL,依此类推。

你必须考虑到如果 key 数量巨大,大约几百万,你可能会遇到一些内存和性能问题,所以在这种情况下,我建议使用通配符检索 key 以获取 key 组,例如 KEYS a* 或 keys 1*,具体取决于您用于键入名称的模式。在这里,您可以创建一个永不停止并为每个组不断迭代的守护进程。

不建议在生产环境中使用带有大量 key 的 KEYS 命令,但您可以使用我之前建议的这种变通方法。

关于configuration - 配置 Redis 以仅保留过去一天的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49230440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com