2

私は 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 つのメンバーを削除することは避けたいと考えています。

ありがとう

4

1 に答える 1