簡體   English   中英

從塊中的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僅選擇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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM