Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按特定值对redis记录进行排序_Redis - Fatal编程技术网

按特定值对redis记录进行排序

按特定值对redis记录进行排序,redis,Redis,我有一个redis表,其中存储的值如下 key: "aa - 1" value {"price": "10"} key: "aa - 2" value {"price": "8"} key: "aa - 4" value {"price": "15"} 我正在执行keys*aa*以获取密钥列表。有没有办法让这个列表也按价格排序? 谢谢。Redis不是很复杂。它肯定不是基于文档的,也没有json类型 从您的评论中,我了解到您在字符串中保存了json。没有办法分类 是redis类型的概述:如果您需

我有一个redis表,其中存储的值如下

key: "aa - 1" value {"price": "10"}
key: "aa - 2" value {"price": "8"}
key: "aa - 4" value {"price": "15"}
我正在执行
keys*aa*
以获取密钥列表。有没有办法让这个列表也按
价格
排序?
谢谢。

Redis不是很复杂。它肯定不是基于文档的,也没有json类型

从您的评论中,我了解到您在字符串中保存了json。没有办法分类


是redis类型的概述:如果您需要排序,您应该选择,以价格作为分数。

首先,这实际上不是一个表。你应该把你的数据看作一组你可以通过键识别的对象:你用KEY1放置你的对象,并且可以用键快速地返回它。但您的对象只是字符串,甚至是字节[]

要在键值存储中存储数据,可以使用多种方法。您可以将整个对象放入键中,并始终返回整个对象。没办法分类。 您可能还需要在属性级别上执行某种垂直拆分,并分别存储每个属性或子对象。比如:

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的产量是按价格排序的。

实际上你们有什么?在redis中没有桌子这样的东西。您可能有一个带有一些键的db。你的钥匙是什么类型的?是的,我有一个带钥匙的db。键只是字符串,值是JSON对象。对不起,我指的是值的类型(键总是字符串)。json不是redis数据类型;然而,我补充了我的答案