Database 如何在Redis中对哈希值进行排序?
这里我有3个散列,我使用sadd来定义关系Database 如何在Redis中对哈希值进行排序?,database,hash,redis,nosql,Database,Hash,Redis,Nosql,这里我有3个散列,我使用sadd来定义关系 hmset user:1 name Jack hmset category:1 name music hmset instrument:1 name guitar sadd user:1:category 1 sadd category:1:instrument 1 所以在这种情况下,如果我想得到用户的仪器,应该如何编写我的命令?这不管用 Sort User:1:Category:Instrument Get Category*:->
hmset user:1 name Jack
hmset category:1 name music
hmset instrument:1 name guitar
sadd user:1:category 1 sadd category:1:instrument 1
所以在这种情况下,如果我想得到用户的仪器,应该如何编写我的命令?这不管用
Sort User:1:Category:Instrument Get Category*:->Instrument
首先,从您的问题中不清楚您正在尝试做什么-也许添加更多关于数据结构的细节以及您正在寻找的最终结果会有所帮助。尝试解释用户、类别和工具实体之间的关系以及您希望运行的查询类型 也就是说,有几个问题是显而易见的:
SORT
(或任何与此相关的命令)时,请确保使用与创建键时使用的大小写相同的键名。这意味着foo
、foo
、foo
和foo
都是不同的键名SADD
语句将生成一个包含以下内容的集合:
127.0.0.1:6379> sadd user:1:category 1 sadd category:1:instrument 1
(integer) 3
127.0.0.1:6379> smembers user:1:category
1) "category:1:instrument"
2) "1"
3) "sadd"
SADD
命令,每个集合一次
127.0.0.1:6379> hmset user:1 name Jack instrument 1
OK
127.0.0.1:6379> hgetall user:1
1) "name"
2) "Jack"
3) "instrument"
4) "1"
SADD user:1:instruments 1 2 3
SORT
获取仪器名称,如下所示:
SORT user:1:instruments BY nosort GET instrument:*->name
谢谢你的回答。我想建立这两种关系;用户类别和类别工具。(我使用sadd进行这些)。我正在寻找一个命令,可以为用户获取相关仪器:1。当然,SADD用户:1:instruments 1 2 3和排序用户:1:instruments BY nosort get instrument:->name运行良好。但我想知道,我真的需要用户和仪器之间的关系才能获取仪器的名称吗?为什么我要问这个问题,因为已经有了用户类别和类别-仪器之间的关系。如果要存储可在用户之间共享的仪器集合,则该类别非常有用。使用user->category->instruments(用户->类别->仪器)关系获取仪器名称不能通过调用
SORT
-您必须在其前面加上HGET user category
,并使用该值获取为SORT
类别设置的仪器。