私は Redis サーバー側のスクリプトを構築していますが、Lua の経験が不足しているため、少し立ち往生しています。
基本的に、小さな「削除」セット(〜100個の値を含む)で見つかったキーを削除したい大きな「メイン」ソートセット(〜1,000個の値を含む)があります。sdiffstore を考えてみてください。ただし、「メイン」セットのメンバー スコアが重要です。
簡単な例:
"main"
ZADD main 6 "one"
ZADD main 7 "two"
ZADD main 8 "three"
ZADD main 9 "four"
ZADD main 10 "five"
"remove"
ZADD remove "two"
ZADD remove "four"
desired output (stored in a sorted set):
6 "one"
8 "three"
10 "five"
そのため、lua サーバー側のスクリプトでは次のようになります。
--これは動作します
redis.call('zrem','main', 'two','four')
--これはそうではありません
local temp = redis.call('smembers','remove')
redis.call('zrem','main', temp )
構文を何度も繰り返してみましたが、役に立ちませんでした。何か案は?
ただし、「削除」メンバーをある種の文字列またはループに変換して、一度に 1 つのメンバーを削除することは避けたいと考えています。
ありがとう