我计划使用Redis为我的项目存储一些信息: - 页面预览 - 点击页面上的特定按钮
关于页面视图,我希望使用信息对所有内容进行排序并获取最常见的10个页面。 但这意味着我需要使用INCR,SORT和TTL,因为我只想要最后一天的观看。 我一直在redis网站上,但似乎我不能使用列表,我可以使用集合或排序集。 所以我有点迷失了。 我应该放弃一些东西吗?
答案 0 :(得分:2)
你走在正确的轨道上 - 排序套装将为你完成这一任务。
每天使用排序套装,例如对于今天的日期,使用密钥名称,例如page-views:20160317
,并在该密钥上使用TTL(EXPIRE
命令),这样数据集的大小就不会无限增长。
排序集中的每个成员都是一个唯一的页面 - 我假设您有一个可用于此的ID属性。当然,每个页面/成员的得分是该页面在该时段(日期)内的视图数量。使用ZINCRBY
增加分数(或者如果您的Redis版本为> 3.0.2,ZADD
命令的INCR
开关)。
通过调用ZREVRANGE page-views:20160317 0 9
可以生成前10个查看过的页面。
答案 1 :(得分:1)
您可以使用ZADD递增排序集中页面的查看次数(每次点击一次操作),并使用ZREVRANGE按照最常见的顺序列出页面计数。
为了保持Redis清洁,您可以在每个ZADD之后调用EXPIRE,或者只是每天删除一次(安排EXE,或者可能是LUA脚本?)。或者,在设置名称中包含日期并定期运行作业以清理旧集。