Redis:存储中间集结果,使用随机名称还是包装在事务中?

时间:2013-08-10 12:09:39

标签: redis sortedset

我必须根据多个(已排序)集合的交集来获得结果。

E.g。

Intersect(Union(A,B), Union(C,D), E)

这样做的显而易见的方法是将Union(A,B)和Union(C,D)存储在临时集中,并使用最终交集命令中的那些。

但显然,这些临时集需要一个名称,尽管Redis是单线程的,如果我使用固定名称,我将遇到并发问题。

我的解决方案是在MULTI / EXEC块中进行整个'查询'(创建临时集,做我的交集,获取结果,删除临时密钥)。

显而易见的替代方案是不使用MULTI / EXEC,而是为这些临时集使用足够随机的名称。

我的问题是:哪个是最佳/最佳做法?

前者可能带有性能(/其他线程的可用性)惩罚但后者增加了复杂性并且不保证不会导致并发问题。

在Lua中做这件事并没有那么多,但我认为这会让它变得更加复杂。

0 个答案:

没有答案