Redisでの大きなソート済みセットの削除
Redisで大きなオブジェクトの削除が遅い理由の詳細については、このクイック概要をお読みください
Redisでソートされた大きなセットを削除するには:
-
ソートされたセットが他のRedisクライアントにすぐに「削除」されたように見えるように、キーの名前を一意の名前空間付きキーに変更します。
-
ソートされたセットから、空になるまで小さなバッチでメンバーを段階的に削除します。削除コマンドのサイズを制限することで、サーバーを長時間ブロックしないようにします。
次のコードは、Redis接続の失敗を適切に処理しないことに注意してください。いずれかのRedisコマンドが失敗して例外が発生した場合は、手動でクリーンアップする必要があります。
# Rename the key
newkey = "gc:hashes:" + redis.INCR("gc:index")
redis.RENAME("my.zset.key", newkey)
# Delete members from the sorted set in batche of 100s
while redis.ZCARD(newkey) > 0
redis.ZREMRANGEBYRANK(newkey, 0, 99)
end
$redis = Redis.new
def delete_sorted_set(key)
# Rename the key
newkey = "gc:zsets:#{$redis.incr("gc:index")}"
$redis.rename(key, newkey)
# Delete members from the sorted set in batches of 100
while $redis.zcard(newkey) > 0
$redis.zremrangebyrank(newkey, 0, 99)
end
end
# Example:
#
# delete_sorted_set("my.large.set")
以下は、Rubyでバックグラウンドジョブを使用した上記の実装例です。
- レスク
- Sidekiq
←「Redisでの大きなオブジェクトの削除」に戻る
-
Redis ZRANGE –Ascランク範囲でソートされたセットの要素を取得する方法
このチュートリアルでは、特定の範囲の間でスコアの昇順でランク付けされた、並べ替えられた設定値の1つ以上の要素を取得する方法について学習します。このために、Redis ZRANGEを使用します コマンド。 ZRANGEコマンド ZRANGEコマンドは、指定された範囲で定義された、指定されたキーに保管されているソート済み設定値の1つ以上の要素を返します。並べ替えられたセットの要素は、スコアの昇順です。スコアが等しい要素には、辞書式順序の昇順が使用されます。 範囲は、開始(包括的)オフセットと終了(包括的)オフセットによって定義されます。これらのオフセットはゼロベースのインデックスであり、
-
Redis ZCARD –Redisデータストアでソートされたセットのサイズを取得する方法
このチュートリアルでは、コマンド– ZCARD を使用して、キーに格納されている並べ替えられた設定値のサイズ(要素数)を取得する方法について学習します。 redis-cliで。 redis ZCARDコマンドの構文は次のとおりです:- 構文:- redis host:post> ZCARD <key name> 出力:- (integer) value, representing the number of elements in the sorted set.(integer) 0, if key does not exist.Error, if key exis