redis の並べ替えられたセットを通常の並べ替えられていないセットにコピーするにはどうすればよいですか? これを行うことができるredisコマンドはありますか? ソートされたセットを手動で繰り返し、ソートされていないセットに手動で挿入することはできますが、これを行うにはもっと良い方法があるようです。
2271 次
1 に答える
7
これを直接行うコマンドはないと思います。
ただし、並べ替えられたセットのコンテンツをクライアントにダウンロードしてから新しいセットにプッシュする代わりに、サーバー上で実行する単純な lua スクリプトを作成できます。
Redis コマンド:
SCRIPT LOAD "for i,v in ipairs(redis.call('zrange', KEYS[1], 0, -1)) do redis.call('sadd', KEYS[2], v) end"
ZADD zset 1 first
ZADD zset 2 second
ZADD zset 3 third
EVALSHA dd1c22a22108d758b93c26eb92d1ef2933cec314 2 zset set
SMEMBERS set
結果:
"dd1c22a22108d758b93c26eb92d1ef2933cec314"
(integer) 0
(integer) 0
(integer) 0
(nil)
1) "second"
2) "first"
3) "third"
SCRIPT LOAD はスクリプトを定義し、その sha ハッシュである EVALSHA を実行して返します。引数は 2 で、2 つのキー名が続くことを示します。最初はソートされてコピー元に設定され、2 番目はコピー先に設定されます。
于 2013-01-12T23:45:56.167 に答える