网站首页技术博客

关于数据结构:Redis Hash:如何同时查询键和值

洞天水月2023-02-14 09:29:44172人次阅读
摘要Redis Hash: How to Query on both Key and Value 我想在Redis中存储键值对(T1,T2)。键和值都是唯一的。 我希望能够同时查询键和值,即HGET(Key)应该返回对应的Value和HGET(Value)应该返回对应的Key。 一个简单的方法是在Redis(T1,T2)和(T2,T1)中创建2个哈希,然后在适当的哈希上查询。这种方法的问题是,对的

Redis Hash: How to Query on both Key and Value

我想在Redis中存储键值对(T1,T2)。键和值都是唯一的。
我希望能够同时查询键和值,即HGET(Key)应该返回对应的Value和HGET(Value)应该返回对应的Key。

一个简单的方法是在Redis(T1,T2)和(T2,T1)中创建2个哈希,然后在适当的哈希上查询。这种方法的问题是,对的插入,更新或删除将需要在两个哈希中都进行更新。

有没有更好的方法来满足我的要求...

如果T1和T2中的一个具有整数类型,则可以使用如下组合:

1
2
3
4
5
6
7
8
9
10

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)

 

如果不是这种情况,那么最好保留两个单独的哈希,最好在Lua脚本中保存

 

  • 感谢Ion的回应。 Key和Value都是我当前要求中的字符串,因此我不能在这里使用Sorted Sets,但是您建议的解决方案非常有用,我希望可以在其他类似要求中使用它:)

文章评论