Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redisでの大きなソート済みセットの削除

Redisで大きなオブジェクトの削除が遅い理由の詳細については、このクイック概要をお読みください

Redisでソートされた大きなセットを削除するには:

  1. ソートされたセットが他のRedisクライアントにすぐに「削除」されたように見えるように、キーの名前を一意の名前空間付きキーに変更します。

  2. ソートされたセットから、空になるまで小さなバッチでメンバーを段階的に削除します。削除コマンドのサイズを制限することで、サーバーを長時間ブロックしないようにします。

次のコードは、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での大きなオブジェクトの削除」に戻る


  1. Redis ZRANGE –Ascランク範囲でソートされたセットの要素を取得する方法

    このチュートリアルでは、特定の範囲の間でスコアの昇順でランク付けされた、並べ替えられた設定値の1つ以上の要素を取得する方法について学習します。このために、Redis ZRANGEを使用します コマンド。 ZRANGEコマンド ZRANGEコマンドは、指定された範囲で定義された、指定されたキーに保管されているソート済み設定値の1つ以上の要素を返します。並べ替えられたセットの要素は、スコアの昇順です。スコアが等しい要素には、辞書式順序の昇順が使用されます。 範囲は、開始(包括的)オフセットと終了(包括的)オフセットによって定義されます。これらのオフセットはゼロベースのインデックスであり、

  2. 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