[英]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僅選擇100行並同時刪除。 就像是
while (true) {
//sleep for 1 minute
//get 100 rows from cache
if (keys.isEmpty()) {
break;
}
jedis.del(key);
}
Redis永遠不會崩潰,我會先測試一下場景,然后再使我的代碼更加復雜。 我剛剛創建了一百萬個密鑰,並刪除了它們。 花了2分鍾,瓶頸是紅寶石客戶端,而不是重做。
也就是說,您可能想查看https://redis.io/commands/unlink ,它是DEL的新的非阻塞版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.