我需要在redis中2个大集合的交集的长度(SCARD)。在
所以这达到了我想要的:
> SINTERSTORE intermediate s:1 s:2
> SCARD intermediate
但是集合很大,所以我不想存储中间值。从概念上讲,我想要:
^{pr2}$有没有一种方法可以在一个命令中实现这一点,也许使用Lua脚本?或者我最好的办法是用我的应用程序语言编写脚本,完成后删除中间值?e、 g.使用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不做嵌套命令,因此概念版本虽然有助于描述需求,但不受支持。
我建议您使用中间值方法,但是不要使用流水线,而是使用事务(MULTI/EXEC)来包装intersect、cardinality和delete操作。
相关问题 更多 >
编程相关推荐