我必须根据多个(已排序)集合的交集来获得结果。
E.g。
Intersect(Union(A,B), Union(C,D), E)
这样做的显而易见的方法是将Union(A,B)和Union(C,D)存储在临时集中,并使用最终交集命令中的那些。
但显然,这些临时集需要一个名称,尽管Redis是单线程的,如果我使用固定名称,我将遇到并发问题。
我的解决方案是在MULTI / EXEC块中进行整个'查询'(创建临时集,做我的交集,获取结果,删除临时密钥)。
显而易见的替代方案是不使用MULTI / EXEC,而是为这些临时集使用足够随机的名称。
我的问题是:哪个是最佳/最佳做法?
前者可能带有性能(/其他线程的可用性)惩罚但后者增加了复杂性并且不保证不会导致并发问题。
在Lua中做这件事并没有那么多,但我认为这会让它变得更加复杂。