【问题标题】:Purge data from redis cache in chunk从块中清除 redis 缓存中的数据
【发布时间】:2017-01-06 00:32:51
【问题描述】:

我需要从 redis 缓存中删除一个池。但是,这个池可能有数百万个密钥。我正在使用以下代码从缓存中删除密钥

String regex = "*." + poolname + ".*";
Set<String> rkeys = jedis.keys(regex);

for (String key : rkeys) {
    LOGGER.info("key ===>" + key);
    jedis.del(key);
}

我担心redis服务器可能会崩溃,以防万一有百万行。 有什么办法可以告诉 redis 只选择 100 行并一次删除。类似的东西

while (true) {
    //sleep for 1 minute
    //get 100 rows from cache
    if (keys.isEmpty()) {
        break;
    }
    jedis.del(key);
}

【问题讨论】:

  • 考虑使用SCAN - Jedis 应该公平对待

标签: caching redis purge


【解决方案1】:

Redis 永远不会崩溃,我会先测试一下场景,然后再根据直觉让我的代码变得更复杂。我刚刚创建了一百万个密钥并删除了它们。花了 2 分钟,瓶颈是 ruby​​ 客户端,没有重做。

也就是说,您可能想查看https://redis.io/commands/unlink,它是 DEL 的新非阻塞版本。

【讨论】:

  • "Redis shouldn't ever crash"
猜你喜欢
  • 2016-09-10
  • 2014-11-13
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多