Redis 同时进行 INCR、SORT 和 TTL?

Redis INCR, SORT and TTL at the same time?

我计划使用 Redis 为我的项目存储一些信息: - 页面预览 - 点击页面上的特定按钮

关于页面浏览量,我想用信息来排序,得到10个最常浏览的页面。 但这意味着我需要使用 INCR、SORT 和 TTL,因为我只想要最后一天的视图。 我一直在 redis 网站上,但似乎我不能使用列表,我可以使用集或排序集。 所以我有点迷路了。 我应该放弃一些东西吗?

Redis 是一把瑞士军刀,所以总是有不止一种方法。这是另一个..

您可以使用 ZADD 增加排序集中页面的查看次数(每次页面点击一次操作)并使用 ZREVRANGE 按最常看到的顺序列出页面次数。

为了保持 Redis 干净,您可以在每次 ZADD 之后调用 EXPIRE,或者每天一次删除集合(安排一个 EXE,或者可能是一个 LUA 脚本?)。或者,在集合名称中包含日期和 运行 定期清理旧集合的作业。

您走在正确的轨道上 - Sorted Sets 将为您完成这项工作。

每天使用一个排序集,例如对于今天的日期,使用一个键名,例如 page-views:20160317,并在该键上使用 TTL(EXPIRE 命令),这样数据集的大小就不会无限增长。

Sorted Set 中的每个成员都是一个独特的页面 - 我假设您有一个 ID 属性 可用于此目的。每个 page/member 的分数自然是该页面在该时间段(天)内的浏览量。使用 ZINCRBY (or if your Redis' version is > 3.0.2, the INCR switch of the ZADD 命令增加分数。

前 10 个查看页面可以通过调用 ZREVRANGE page-views:20160317 0 9.

来生成