2
我需要redis中2個大集合交集的長度(SCARD)。Redis:找到SINTER結果的SCARD而不存儲中間集合
那麼,這達到了我想要的:
> SINTERSTORE intermediate s:1 s:2
> SCARD intermediate
然而,集大,所以我不想讓存儲中間值。從概念上說,我想要:
> SCARD (SINTER s:1 s:2)
有沒有辦法在一個命令中實現這一點,也許與Lua腳本?或者,我最好用我的應用程序語言編寫腳本,並在完成後刪除中間值?例如使用python和redis-py:
>>> r = redis.Redis(...)
>>> pipe = r.pipeline()
>>> res = pipe.sinterstore('intermediate', 's:1', 's:2').scard('intermediate').delete('intermediate').execute()
>>> print res[1]
對我而言。請注意,在'redis-py'中,相當於'MULTI' /'EXEC'實際上被包裝到管道對象的功能中(爲此目的,它們具有名爲'multi'和'execute'的方法)。 – rchang
@rchang謝謝! RTFMing後,我看到redis-py的管道默認是事務性的#LearnSomethingNewEveryDay :) –
謝謝你們。我將使用管道方法。 –