【发布时间】:2013-08-03 14:44:01
【问题描述】:
Redis 的集合“得分”和“排名”功能有哪些用例(除了游戏的典型“排行榜”示例之外?我试图弄清楚如何将这些动态新功能用作我预计会从使用传统的关系数据库转向使用 Redis 作为持久数据存储。
【问题讨论】:
标签: redis
Redis 的集合“得分”和“排名”功能有哪些用例(除了游戏的典型“排行榜”示例之外?我试图弄清楚如何将这些动态新功能用作我预计会从使用传统的关系数据库转向使用 Redis 作为持久数据存储。
【问题讨论】:
标签: redis
ZSETs 非常适合基于分数进行选择或范围,但分数可以是任何数值,例如时间戳。
我们将所有美国股票的每日股票价格存储在 redis 中。这是 ebay 的示例...
ZADD key score member [score member ...]
...
ZADD stocks:ebay 1 30.39 2 32.70 3 31.25 4 31.75 5 29.12 6 29.87 7 29.93
在这种情况下,score 值通常是长时间戳,除此之外,如果我们想要过去 3 天的每日价格,我们只需将两个日期转换为时间戳,并使用时间戳范围 1 3 从 redis 中提取...
zrangebyscore stocks:ebay 1 3
1) "30.39"
2) "32.70"
3) "31.25"
查询速度非常快,可以很好地满足我们的需求。
希望对你有帮助!
【讨论】:
ZADD stocks:ebay 8 30.39
zset 是唯一可以排序的键类型
例如,您可以想象将特定文章的所有 cmets key id 放在 zset 中, 用户将对每个 cmets 投票赞成/反对,这将改变分值
之后,当您需要绘制 cmets 时,您可以先订购更好的 cmets(如这里)
使用 ZREMRANGEBYSCORE,您可以想象每天删除所有非常糟糕的 cmets
但作为每个 redis 类型,它们仍然是基本的,给你一个专门的用例很难有一些:-)
【讨论】: