Redis 的集合“得分”和“排名”功能有哪些用例(除了游戏的典型“排行榜”示例之外?我正试图弄清楚如何利用这些动态的新功能,因为我预计会移动从使用传统的关系数据库到 Redis 作为持久数据存储。
问问题
1717 次
2 回答
5
ZSET
s 非常适合基于分数的选择或范围,但分数可以是任何数值,例如时间戳。
我们将所有美股的每日股票价格存储在 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 天的每日价格,我们只需将两个日期转换为时间戳并使用时间戳范围从 redis 中提取1 3
...
zrangebyscore stocks:ebay 1 3
1) "30.39"
2) "32.70"
3) "31.25"
查询速度非常快,可以很好地满足我们的需求。
希望能帮助到你!
于 2013-08-02T23:13:05.967 回答
1
zset 是唯一可以排序的键类型
例如,您可以想象将特定文章的所有评论键 id 放在 zset 中,用户将对每条评论投赞成票/反对票,这将改变得分值
之后,当您需要绘制评论时,您可以将它们排序,更好的评论放在首位(如这里)
使用 ZREMRANGEBYSCORE 你可以想象每天删除所有非常糟糕的评论
但是作为每个 redis 类型,它们仍然是基本的,给你一个专门的用例很难有一些:-)
于 2013-08-02T21:34:16.843 回答