Sorting 使用集合中的哈希对redis中的集合进行排序
我们使用REPL redis cli在redis中创建了3个哈希,如下所示:Sorting 使用集合中的哈希对redis中的集合进行排序,sorting,hash,redis,set,redis-cli,Sorting,Hash,Redis,Set,Redis Cli,我们使用REPL redis cli在redis中创建了3个哈希,如下所示: hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug" hmset redishop:items:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug" hmset redishop:ite
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
sadd redishop:list-all redishop:items:Articulo3
sadd redishop:list-all redishop:items:Articulo2
sadd redishop:list-all redishop:items:Articulo1
我检查了redis中的结构是否创建正常,这些是:
hgetall redishop:items:Articulo3
现在,我们以以下方式在集合中添加哈希:
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
sadd redishop:list-all redishop:items:Articulo3
sadd redishop:list-all redishop:items:Articulo2
sadd redishop:list-all redishop:items:Articulo1
现在我们正在使用命令SORT:
SORT redishop:list-all BY redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET # GET redishop:items:*->price
我们永远不会得到结果,集合中的散列值为null,我不明白为什么
另一方面,如果我们创建哈希并以另一种方式设置:
multi
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo1
hmset redishop:items3:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo2
hmset redishop:items3:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo3
exec
通过这种方式,命令排序可以完美地工作,散列被插入到集合中,但我不明白为什么在redis文档的基础上:
127.0.0.1:6379> SORT redishop:list-all BY *->price
1) "redishop:items:Articulo1"
2) "redishop:items:Articulo2"
3) "redishop:items:Articulo3"
127.0.0.1:6379> SORT redishop:list-all BY *->price GET *->price
1) "12.99"
2) "13.99"
3) "14.99"
通过这种方式,命令排序可以完美地工作
在本例中,您只使用键名的“id”部分填充集合,因此GET和BY子句映射到实际数据。澄清一下,这与
MULTI
块的使用(或缺乏)无关。我继续,但不理解,对不起。此外,更重要的是,为什么如果我在集合中插入块MULTI之间的散列,我可以用我的密钥的最后一个id引用它,并按照我的意愿进行排序,但如果我用MULTI进行相同的操作,我就不能这样做?我很抱歉,但我不明白工具中看起来像个bug。如果同一组我有一个带有redishop:item:cars键的散列,另一个带有redishop:itemsBig:truck键的散列,我想要卡车的价格,会发生什么。我能做吗?也许在文件中有任何参考,我不这么认为。。。。。。因为最奇怪的是,如果我在multi-block和引用我钥匙的最后一个id之间做相同的操作,以后我可以根据需要使用SORT。但是如果我尝试在multi中做相同的操作,即hmset car:1 name“X”price 3000,然后将sadd mylist 1,我在集合中添加了其他与汽车不同的东西:1但如果我做了相同的东西,但成了多块,我可以做,我不明白为什么,也许这是工具redis cli中的一个错误?对不起,我不明白最后一条评论中的问题。也许可以尝试一个新问题,这个问题只关注那个问题。