redis 控制用户频次问题

11 天前
 chenfang

redis 如何限制用户频次?

目前的是 tomcat 集群,然后会有多个任务 id,同时需要限制用户 id 频次,比如 每人每天展示 5 次

现在的 redis 结构限制频次会丢一些 (第一个图)

现在要改成精准控制频次,目前我想到的方案是 (第二个图)

这个方案倒是可以满足需求,有两个不足的点

  1. 因为涉及到多个任务 id,就会使用多个 hash,然后导致任务 id 和用户 id(key)过多,这样是不是会占用一倍的 redis 内存空间? 多个相同的用户 id 如何才能让它存一份数据,其他的用指针?

  2. 之前没用过 lua 脚本,这个性能如何?

1894 次点击
所在节点    程序员
22 条回复
archxm
11 天前
@chenfang #20 不管 redis 是啥,你后台服务器几台呢?如果多台,就先按用户 id 分桶,用户肯定每次固定分配到一台服务器。
然后用户分到一台服务器后,你的服务器是多线程或多进程吗?然后你可以在服务器上设置线程池或进程池,来定死用户到固定线程(或进程)上来处理,这样不会发生冲突。不用管具体存到 redis 哪个分片
ychost
11 天前
疲劳度控制问题是吧,设置好数据过期时间应该费不了多少内存

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1088766

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX