redis,按哈希查找,按字段值查找

k97glaaz  于 2021-06-09  发布在  Redis
关注(0)|答案(2)|浏览(362)

我想用redis中的books info创建哈希,例如: HMSET books key "83-7197-669-0" title "Access. DB desing" price 79.0 publisher "Helion" year 2002 HMSET books key "83-7197-786-7" title "Access XP" price 65.0 publisher "Helion" year 2003 那我只想找一本带钥匙的书 83-7197-669-0 ,我试过:

  1. HGET books key "83-7197-669-0" (error) ERR wrong number of arguments for 'hget' command 2) HGETALL books 1) "key" 2) "83-7197-786-7" 3) "title" 4) "Access XP" 5) "price" 6) "65.0" 7) "publisher" 8) "Helion" 9) "year" 10) "2003" 我不知道为什么,但我只看到了第二本书。。
    接下来,我想找一本定价的书,但没有成功。我甚至不知道该尝试什么。有什么想法吗?
fcipmucu

fcipmucu1#

正如您可能看到的,您拥有所有这些属性,如 "key" 以及 "title" 在你的redis哈希里。
解决方案很简单,只需省略键并以序列化形式存储其余数据。redis基本上是类固醇的键值存储,所以将第一个命令 HMSET "83-7197-669-0" title <title> price <price> ... 根据您的用例,您还可以使用 hset ,把所有东西都存储在 books 并将值编码为单个序列化条目。
如果您正在寻找通过多个键访问redis的方法,那么您很可能使用了错误的工具。关系数据存储在这方面更好;redis仍然是一个高速的键值存储库,里面有一些额外的东西。

nwo49xxi

nwo49xxi2#

redis中的hset就像一张Map中的Map,您示例中的书籍是外部Map的键,其中 key, title, price ,其他字段类似于内部Map的键。
要按键取书,你可以设置 key 作为hget的名称和使用hget key 用钥匙取书。

HMSET books:83-7197-669-0 title "Access. DB desing"  price 79.0 publisher "Helion" year 2002

HGETALL books:83-7197-669-0

应该返回hset的所有字段。我希望这能给你一个好的开始redis哈希。

相关问题