不允许使用 redis和memcached情况下如何限制同一用户接口请求的频率

新手上路,请多包涵

小生不才 想了大半天都没想出,希望有人可以一起讨论讨论,研究研究。

不允许使用 redis和memcached情况下如何限制同一用户同一接口请求的频率。
非常感谢~

阅读 3.2k
5 个回答

这是什么奇怪的需求。
如果是受环境所限,没有 Redis 和 memcached 的话。别的存储数据的东西总有吧?比如某种数据库。如果你是单机,用本地文件也行。如果你是单进程,数据存内存里也行。
总之你需要有个地方来存东西。没有记忆的话何谈频率呢?有地方存数据,然后就上个桶算法就行了。存哪算法都一样,差别只是用什么存储API。

那就用数据库呗,数据缓存在内存一份,所有操作先在内存里面操作,再异步更新就可以。总之,在流程上控制好对db的访问次数,能在内存中做的就在内存做就可以。
先操作内存做量的控制,允许后再更新db拿到最新的值,做量的空值。

限流算法的思想,具体就看你用什么存储实现。内存也ok。

可以单独建一张表,把用户id,创建时间,接口地址存进去。然后利用sql语句计算当天某用户请求接口的次数。不过,这样子会增加服务器和数据库的负担,哈哈。

这么简单的问题竟然没人回答对。。。
知道什么叫文件锁吗?

推荐问题