再次求救 redis 用户限制频次问题

chenfang · 2024-11-20 11:23:10 · 103 次点击

虽然是限制频次,更多的是和业务代码结合的问题

现在的需求是一次请求进入之后,只读取一次(或者是一个常量不会根据下游服务的增多而增多)redis 数据,来论坛寻求帮助,看有没有好的解决方案

现在的服务情况是: 一个 tomcat 集群中,控制频次按用户 id 去限制,一次请求就是一个用户,可以有多个限制频次的任务

一个请求进入 tomcat 后,之后会同时发送比如三次请求(三个线程)给不同的下游服务,限制频次是针对不同的下游服务,可能有两个个下游限制了频次,也可能是一个

之前的条件比如会有 qps 限制,需要等到过滤条件走到限制频次的代码才知道需不需要限制频次,把读取 redis 尽可能往后放,减少读取 redis 的次数

还有一个问题是 redis 里边不光只有频次限制,还有一些别的数据,可能在频次限制之前或者之后使用

我目前想到的解决方案是:

  1. 那些不是限制频次的 key,在遇到需要读取 redis 的时候,使用 pipeline 统一读取
  2. 在循环过滤条件的时候,把请求 redis 的 key 存在一起,然后使用 CyclicBarrier+lua 脚本读取和写入限制频次 keys
举报· 103 次点击
登录 注册 站外分享
快来抢沙发
0 条回复  
返回顶部