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

Mar*_*ies 6 sortedset redis

我必须根据(排序)集合的多个联合的交集得到结果.

例如

Intersect(Union(A,B), Union(C,D), E)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

我的问题是:哪种更好/最佳做法?

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

在Lua中做到这一点并没有那么多,但我认为这会让它变得更加复杂.