2014-09-24 49 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