2014-09-24 31 views
1

我想在Redis中存儲鍵值對(T1,T2)。密鑰和值都是唯一的。 我希望能夠在鍵和值上進行查詢,即HGET(Key)應該返回相應的值,HGET(Value)應該返回相應的Key。Redis哈希:如何查詢密鑰和值

一個簡單的方法是在Redis(T1,T2)和(T2,T1)中創建2個哈希,然後在適當的哈希上查詢。這種方法的問題是插入,更新或刪除對需要兩個哈希中的更新。

有沒有更好的方式來滿足我的要求...

回答

1

如果T1之一,T2擁有你可以使用一個組合就像一個整數類型:

1->foo 
2->bar 

ZADD myset 1 foo 
ZADD myset 2 bar 

ZSCORE myset foo //returns 1.0 in O(n) 
ZSCORE myset bar //return 2.0 in O(n) 

ZRANGEBYSCORE myset 1 1 //returns "foo" in O(log(N)+M) 

source

如果這不是這種情況,那麼保持2個獨立的哈希值,最好在一個Lua腳本中是合理的。

+0

感謝Ion的迴應。 Key和Value都是我當前需求中的字符串,因此我不能在這裏使用Sorted Sets,但是您建議的解決方案非常豐富,我希望可以在其他類似需求中使用它:) – 2014-09-24 07:52:26