从块中的Redis缓存清除数据

雷沙姆·库马里(Resham kumari)

我需要从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);
}
马蒂亚斯·温克尔曼(Matthias Winkelmann)

Redis永远不会崩溃,在预感我的代码变得更加复杂之前,我会先测试该场景。我刚刚创建了一百万个密钥,并将其删除。花了2分钟,瓶颈是红宝石客户端,而不是重做。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章