【问题标题】:Redis Hash: How to Query on both Key and ValueRedis Hash:如何同时查询键和值
【发布时间】:2014-11-18 14:12:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: data-structures hash map redis keyvaluepair


    【解决方案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 脚本中

    【讨论】:

    • 感谢 Ion 的回复。 Key 和 Value 在我当前的需求中都是字符串,因此我不能在这里使用 Sorted Sets,但是您建议的解决方案非常有用,我希望在其他类似的需求中使用它:)
    猜你喜欢
    • 2020-04-22
    • 2014-11-14
    • 1970-01-01
    • 2012-07-02
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多