Performance Redis上的MAX()SQL等效项
我是Redis的新手,现在我在改进我的stat应用程序方面遇到了问题。用于生成统计信息的当前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中?
根据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)