从块中的 redis 缓存中清除数据
Purge data from redis cache in chunk
我需要从 Redis 缓存中删除一个池。但是,这个池可能有数百万个密钥。我正在使用以下代码从缓存中删除密钥
String regex = "*." + poolname + ".*";
Set<String> rkeys = jedis.keys(regex);
for (String key : rkeys) {
LOGGER.info("key ===>" + key);
jedis.del(key);
}
万一有百万行,恐怕redis服务器可能会崩溃。
有什么办法可以告诉 redis select 只有 100 行并及时删除。像
while (true) {
//sleep for 1 minute
//get 100 rows from cache
if (keys.isEmpty()) {
break;
}
jedis.del(key);
}
Redis 不应该崩溃,我会在预感使我的代码更复杂之前测试该场景。我刚刚创建了一百万个密钥并删除了它们。花了 2 分钟,瓶颈是 ruby 客户端,而不是重做。
也就是说,您可能想查看 https://redis.io/commands/unlink,这是 DEL 的一个新的非阻塞版本。
我需要从 Redis 缓存中删除一个池。但是,这个池可能有数百万个密钥。我正在使用以下代码从缓存中删除密钥
String regex = "*." + poolname + ".*";
Set<String> rkeys = jedis.keys(regex);
for (String key : rkeys) {
LOGGER.info("key ===>" + key);
jedis.del(key);
}
万一有百万行,恐怕redis服务器可能会崩溃。 有什么办法可以告诉 redis select 只有 100 行并及时删除。像
while (true) {
//sleep for 1 minute
//get 100 rows from cache
if (keys.isEmpty()) {
break;
}
jedis.del(key);
}
Redis 不应该崩溃,我会在预感使我的代码更复杂之前测试该场景。我刚刚创建了一百万个密钥并删除了它们。花了 2 分钟,瓶颈是 ruby 客户端,而不是重做。
也就是说,您可能想查看 https://redis.io/commands/unlink,这是 DEL 的一个新的非阻塞版本。