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
Performance Redis上的MAX()SQL等效项_Performance_Redis_Nosql Aggregation_Nosql - Fatal编程技术网

Performance Redis上的MAX()SQL等效项

Performance Redis上的MAX()SQL等效项,performance,redis,nosql-aggregation,nosql,Performance,Redis,Nosql Aggregation,Nosql,我是Redis的新手,现在我在改进我的stat应用程序方面遇到了问题。用于生成统计信息的当前SQL如下所示: 根据id DESC limit 10000从表ORDER中选择最小值(创建时)和最大值(创建时) 它将从字段中创建的返回MIN和MAX值 我在Redis上读到了范围和评分,似乎它们可以用来解决这个问题。但我仍然对过去10000条记录的得分感到困惑。它们是可以用来解决这个问题,还是有其他方法可以使用Redis解决这个问题 关于您的目标似乎有些不清楚-您是否希望将所有记录存储在Redis中?

我是Redis的新手,现在我在改进我的stat应用程序方面遇到了问题。用于生成统计信息的当前SQL如下所示:

根据id DESC limit 10000从表ORDER中选择最小值(创建时)和最大值(创建时)

它将从字段中创建的
返回
MIN
MAX

我在Redis上读到了
范围
评分
,似乎它们可以用来解决这个问题。但我仍然对过去10000条记录的得分感到困惑。它们是可以用来解决这个问题,还是有其他方法可以使用Redis解决这个问题


关于

您的目标似乎有些不清楚-您是否希望将所有记录存储在Redis中?如果是,那么
表还有哪些列,您对其运行了哪些其他查询

我将从表面上回答您的问题,但请注意,在大多数NoSQL数据库(包括Redis)中,您需要根据计划如何获取数据来存储数据。假设您希望获得最近10K记录的最小/最大创建日期,我建议您将它们保存在一个排序集中。排序集的成员将是唯一的
id
,其分数将是创建日期(使用历元值),例如,id为1、2和3的行分别在日期10、100和1000创建:

ZADD table 10 1 100 2 1000 3 ...
现在获取最小创建日期很容易-只需执行
ZRANGE表0和核心
-最大值只需
ZRANGE表1和核心
。唯一“棘手”的部分是确保排序集保持更新,因此对于每个新记录,您需要从集合中删除最低的id并添加新的id。在伪Python代码中,这类似于以下内容:

def updateMinMaxSortedSet(id, date):
    count = redis.zcount('table')
    if count > 10000:
        redis.zrem('table', id-10000)
    redis.zadd('table', id, date)