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

Redisで大きなセットを削除する

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

Redisで大きなセットを削除するには:

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

  2. セットからメンバーを少しずつ、空になるまで少しずつ削除します。削除コマンドのサイズを制限することで、サーバーを長時間ブロックしないようにします。

次のコードは、Redis接続の失敗を適切に処理しないことに注意してください。いずれかのRedisコマンドが失敗して例外が発生した場合は、手動でクリーンアップする必要があります。

擬似コード
# Rename the key
newkey = "gc:hashes:" + redis.INCR("gc:index")
redis.RENAME("my.set.key", newkey)

# Delete members from the set in batches of 100
cursor = 0
loop
  cursor, members = redis.SSCAN(newkey, cursor, "COUNT", 100)
  if size of members > 0
    redis.SREM(newkey, members)
  end
  if cursor == 0
    break
  end
end
ルビー
$redis = Redis.new

def delete_set(key)
  # Rename the key
  newkey = "gc:sets:#{$redis.incr("gc:index")}"
  $redis.rename(key, newkey)

  # Delete members from the set in batches of 100
  cursor = "0"
  loop do
    cursor, members = $redis.sscan(newkey, cursor, count: 100)
    $redis.srem(newkey, members) if members.size > 0
    break if cursor == "0"
  end
end

# Example:
#
#   delete_set("my.large.set")

以下は、Rubyでバックグラウンドジョブを使用した上記の実装例です。

  • レスク
  • Sidekiq

←「Redisでの大きなオブジェクトの削除」に戻る


  1. Redis GEODIST –地理空間値の2つのメンバー間の距離を取得する方法

    このチュートリアルでは、キーに格納されている地理空間値の2つのメンバー間の距離を取得する方法について学習します。このために、Redis GEODISTを使用します コマンド。 GEODISTコマンド このコマンドは、指定された単位のキーに格納されている地理空間値(Sorted Set)の2つのメンバー間の距離を返すために使用されます。指定されたメンバーの一方または両方が地理空間値に存在しない場合、nullが返されます。 指定する単位は次のタイプである必要があります:- m メーター用(デフォルト)。 km キロメートルのために。 mi 何マイルも。 ft

  2. Excel で大量のデータ セットを分析する方法 (6 つの効果的な方法)

    この記事では、 大規模なデータ セット を分析する方法を紹介します エクセルで。ビジネス活動の長所と短所を知ることは非常に重要です。アカウントと販売記録を保持するのは動的なプロセスです 組織の。販売、購入、または交換が一定期間に頻繁に発生するためです。そのため、今日から過去 3、4 か月間の売上や利益の記録を知りたい場合、それらに関する膨大な量のデータが見つかる可能性があります。幸いなことに、Excel には、この問題に役立つ非常に優れた機能がいくつかあります。 分析できます これらの 大規模なデータ セット Excel で部品ごとに計算できるため、計算が簡単になります。 Excel で大