セットアップを返します。 keystoclear2は両方の値として です。私は何もでていないのRedisのLuaスクリプトを開梱し、私は keystoclear1はそれに「B」の単一の値を持つセットに対してこのコードを実行すると、BのC</p> <p>をサッド実行することにより、異なる結果
local keystoclear = unpack(redis.call('smembers', KEYS[1]))
redis.call('sadd', 'keystoclear1', keystoclear)
redis.call('sadd', 'keystoclear2', unpack(redis.call('smembers', KEYS[1])))
はLuaの専門家を意味し、私はちょうどここにいくつかの奇妙な振る舞いを持つことができますが、私はそれを引き起こしているかを知りたいと思います。
これは、redis-cliとstackexchange.redisクライアントを使用して、WindowsとLinuxの両方のバージョンのredisでテストしました。すべてのケースで同じ動作。これはほんの一例ですが、私は実際にアンパックの結果を保存したいのですが、いくつかの操作を実行する必要があるからです。
更新:問題を理解しています。
table.unpack() only returns the first element
Luaは常にコールの状況に関数から結果の数を調整します。関数を文として呼び出すと、Luaはすべての結果を破棄します。式として呼び出しを使用すると、Luaは最初の結果のみを保持します。呼び出しが式のリストの最後の(または唯一の)式である場合のみ、すべての結果が得られます。
'redis.call( 'sadd'、 'keystoclear1'、(unpack(keystoclear)))' – moteus
@moteusを呼び出すと、これは 'keystoclear'の最初の要素です。 。 –