パイプを使用してredisでマルチセット操作を計算することは可能ですか?
(a ユニオン b ユニオン c) 交差 (d ユニオン c) SUNION abc SINTER dc
いいえ、パイプラインではコマンドのセット全体が送信された後にのみ結果が得られるため(ドキュメントを参照)、おそらくご想像のとおり、例のネストされた各操作の結果を個別にフェッチする必要があります。
ただし、redis 2.6に組み込まれているスクリプト機能といくつかのluaを使用すると、非常によく似たものを実現できます。これは、請求書に適合しているようです。
EVAL "return redis.call('sinter', redis.call('sunion', 'a', redis.call('sunion', 'b', 'c')), redis.call('sunion', 'd', 'c'))"
上記のコードは単純化されたものであり、テストされていませんが、何が可能かについての大まかなアイデアが得られるはずです。ドキュメントの詳細については、こちらをご覧ください。
いいえ、ただしトランスキャストを使用できます (MULTI)
MULTI
SUNIONSTORE abc a b c
SUNIONSTORE cd c d
SINTERSTORE i abc cd
SMEMBERS i
DEL abc cd i
EXEC
psしかし、すべてのメンバーがiに配置された後、 cを使用する必要はないようです