在我的應用程序中,我需要一組值,我需要檢查在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