在我的应用程序中,我需要一组值,我需要检查在Redis中设置的中有多少个这些值。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
的替代品,但转念一想,这将是实现它的一个很好的(哈克)的方式:
> 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
的时候,但我真的不知道如果我是100%正确的,我也不知道是否有使用hmget
这样的任何严重的缺点,这是非常好的。
所以我只是想用hmget
这种方式的缺点和更好的方法来解决这个问题。
谢谢你的答复,但我不能以编程方式做到这一点? (我真的想从'Java'做到这一点) – Karthik
当然你可以 - Redis的Lua脚本可以从Java调用完美。阅读您的客户(Jedis?)文档。 –
是的,杰迪斯。其实我正在使用Spring Data Redis。我会检查如何做到这一点。 – Karthik