首页 » 网站建设 » phpredis频率限制技巧_Redis应用限制之访问频率

phpredis频率限制技巧_Redis应用限制之访问频率

访客 2024-11-04 0

扫一扫用手机浏览

文章目录 [+]

代码逻辑:

String key = "rage.limiting:"+ip;// 判断key是否存在int flag = exists(key);// key rate.limiting:192.168.88.60if(flag == 1){// key 存在 自增1 int count = incr(key); if(count > 100){ // 超过限定 log.info("访问频率超过了限定,请稍后重试"); return ;}}else{// key 不存在 multi(); // 开缘由务incr(key); // key不存在自增1 值为1expire(key,60); // 设置过期韶光exec(); // 提交事务}2.实现办法二

  实现办法一实在还有个问题,比如如果用户第一分钟的访问了99次,前面58秒访问了9次,后面1秒访问了90次,然后用户后一秒也访问了99次,而后一分钟的第一秒访问了90次,后面的58秒访问了9次,这样按照上面的算法是没有问题的,但是这种极度情形大家还是可以创造问题的。

phpredis频率限制技巧_Redis应用限制之访问频率

  办理方法:先将上面案例中的100次调度为10次便于在次场景中描述,要精确的担保同一个用户每分钟最多访问10次,须要记录下来用户每次访问的韶光。
因此对每个用户我们利用一个List列表类型的键来记录他最近10次访问的韶光,一旦键中的元素超过10个,就判断最早的元素间隔现在的韶光是否小于1分钟。
如果是表示用户最近1分钟访问次数超过了10次,如果不是就将现在的韶光加入到行列步队中,同时把最早的元素删除。

phpredis频率限制技巧_Redis应用限制之访问频率
(图片来自网络侵删)

逻辑代码

String key = "rate.limiting:"+IP;int listLength = llen(key);if(listLength < 10){lpush(key,new());}else{long time = lindex(key,-1);if(now()-time < 60){log.info("访问频率超过了限定,请稍后再试");}else{lpush(key,now);ltrim(key,0,9);}}

标签:

相关文章

大数据助力航企腾飞,智慧航旅新时代

随着互联网技术的飞速发展,大数据逐渐成为航企提升运营效率、优化服务体验的重要手段。航企通过收集、分析海量数据,为旅客提供个性化、智...

网站建设 2024-12-17 阅读0 评论0

php应用date函数技巧_PHP date 函数

PHP date( 函数PHP date( 函数可把韶光戳格式化为可读性更好的日期和韶光。韶光戳是一个字符序列,表示一定的事宜...

网站建设 2024-12-17 阅读0 评论0

大数据助力马彩行业,革新赛事体验

随着互联网技术的飞速发展,大数据时代已经到来。在这个时代背景下,马彩行业也迎来了前所未有的机遇。大数据技术为马彩行业提供了强大的数...

网站建设 2024-12-17 阅读0 评论0