在我的应用程序中,我需要一组值,并且需要检查这些值中有多少存在于 Redis 中的集合中。
简单地说,我想要做的事情就是:
> Sadd myset field1
(integer) 1
> Sadd myset field2
(integer) 1
> Sadd myset field4
(integer) 1
> Sismember myset field1 field4 // which is not possible as of now.
由于我不能为SISMEMBER
提供多个参数,我可能需要进行多次redis调用,这非常耗时。
我在考虑替代方案,如pipelining
,但后来我想这将是一个很好的(hacky)实现方式:
> Hset myhash field1 "true"
(integer) 0
> Hset myhash field2 "true"
(integer) 0
> Hset myhash field4 "true"
(integer) 1
> Hmget myhash field1 field2 field3
1) "true"
2) "true"
3) (nil)
> Hmget myhash field1 field2 field3 field4
1) "true"
2) "true"
3) (nil)
4) "true"
Redis
HMGET页面上是这样说的:
自2.0.0版本起可用。
时间复杂度:O(N),其中N是请求的字段数。
与多次调用SADD
相比,这真的非常好,但我不确定我的理解是否正确,也不知道使用hmget
这种方法是否有任何严重的缺点。
所以,我想了解使用hmget
这种方法的缺点以及解决此问题的更好方法。
lua
这个名字,所以我不能完全理解你的脚本。我进行了一些搜索,并根据你的脚本编写了一个略微不同的脚本。请看一下并告诉我是否在所有情况下都有效。 - Karthik