0

redis キャッシュからプールを削除する必要があります。ただし、このプールには数百万のキーが含まれる場合があります。次のコードを使用して、キャッシュからキーを削除しています

String regex = "*." + poolname + ".*";
Set<String> rkeys = jedis.keys(regex);

for (String key : rkeys) {
    LOGGER.info("key ===>" + key);
    jedis.del(key);
}

何百万行もある場合、redisサーバーがクラッシュするのではないかと心配しています。100行のみを選択して一度に削除するようにredisに指示できる方法はありますか? 何かのようなもの

while (true) {
    //sleep for 1 minute
    //get 100 rows from cache
    if (keys.isEmpty()) {
        break;
    }
    jedis.del(key);
}
4

1 に答える 1

0

Redis がクラッシュすることはありません。コードをより複雑にする前に、シナリオをテストします。100万個のキーを作成して削除しました。2分かかり、ボトルネックはreidではなくrubyクライアントでした。

そうは言っても、DEL の新しいノンブロッキング バージョンであるhttps://redis.io/commands/unlinkを確認することをお勧めします。

于 2017-01-05T16:32:51.387 に答える