我有一个redis表,其值存储为
key: "aa - 1" value {"price": "10"}
key: "aa - 2" value {"price": "8"}
key: "aa - 4" value {"price": "15"}
我正在执行keys *aa*
以获取密钥列表。有没有办法让price
订购此列表?
感谢。
答案 0 :(得分:0)
Redis不是很复杂。它肯定不是基于文档的,并且没有json类型。
从你的评论我明白你在字符串中保存了json。没有办法对此进行排序。
Here概述了redis类型:如果您需要排序,则应决定sorted sets,并将价格作为分数。
答案 1 :(得分:0)
首先,这实际上不是一张桌子。您应该将数据视为一组可以通过键识别的对象:将对象与key1放在一起,然后使用key快速恢复。但是你的对象只是字符串甚至是byte []。
要将数据存储在键值存储中,可以使用多种方法。您可以将整个对象放入键中,并始终返回整个对象。无法对任何事情进行排序。 您还可以在属性级别执行某种垂直拆分,并分别存储每个属性或子对象。类似的东西:
key: "aa - 1:price" value "10"
key: "aa - 1:name" value "CoolName"
明显的缺点 - 很难以一致的方式维护,需要很多请求来获取整个对象。虽然也可以使用GET "aa - 1:*"
但是在这里,你可以使用不同的redis数据结构存储不同的属性。
例如,您可以使用ZADD存储price
。这样的事情:
ZADD pricesSet 10 "aa - 1"
ZADD pricesSet 4 "aa - 2"
然后你可以使用ZRANGEBYSCORE从这个键中获取数据
ZRANGEBYSCORE priceSet 5 15
意味着获得价格从5到15的所有商品的钥匙。您将获得" aa - 1"然后可以单独购买。
是的,ZRANGEBYSCORE的输出按价格排序。