从块中的redis缓存中清除数据

时间:2016-12-23 12:48:36

标签: caching redis purge

我需要从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);
}

1 个答案:

答案 0 :(得分:0)

Redis不应该崩溃,我会测试这个场景,然后让我的代码变得更加复杂。我刚刚创建了一百万个密钥并将其删除。花了2分钟,瓶颈就是红宝石的客户端,而不是重做。

也就是说,您可能需要查看https://redis.io/commands/unlink,这是DEL的一个新的非阻止版本。