您的目标似乎有些不清楚 - 您是否希望将所有记录存储在 Redis 中?如果是这样,该table
表还有哪些其他列以及您对它运行了哪些其他查询?
我会从表面上回答您的问题,但请注意,在大多数 NoSQL 数据库(包括 Redis)中,您需要根据您计划获取数据的方式来存储数据。假设您想获取最近 10K 记录的最小/最大创建日期,我建议您将它们保存在排序集中。Sorted Set 的成员将是唯一的id
,他们的分数将是创建日期(使用 epoch 值),例如,id 为 1、2 和 3 的行分别在日期 10、100 和 1000 创建:
ZADD table 10 1 100 2 1000 3 ...
获得最小的创建日期现在很容易 - 只需要做ZRANGE table 0 0 WITHSCORES
- 最大值就在ZRANGE table -1 -1 WITHSCORES
咫尺之遥。唯一“棘手”的部分是确保 Sorted Set 保持更新,因此对于每条新记录,您都需要从集合中删除最低的 id 并添加新的。在伪 Python 代码中,这将类似于以下内容:
def updateMinMaxSortedSet(id, date):
count = redis.zcount('table')
if count > 10000:
redis.zrem('table', id-10000)
redis.zadd('table', id, date)