时间:2021-05-23
我们可以利用 redis 过期Key来实现接口的频次限制。可以自定义一些访问的(速度)限制条件来把那些触发限制的请求拒之门外.一般常用来进行对爬虫的限制.
下面就利用 redis 来实现了一个简单的案例:
注:在使用 redis Key过期的时候需要注意,在设置了过期时间后,再次改变 Key 的 Value 值时,之前设置的过期时间会失效。
解决办法:
1)在修改 Value 值的时候,查一下过期时间还有多少 ttl 在修改值的时候把过期时间重新赋值回去(本文用的就是此方法)
2)redis 中设置了过期时间,如果 list 结构中添加一个数据或者改变 hset 数据的一个字段是不会清除超时时间的;
官方网站看了一下expire的说明:
这样解释的:
The timeout will only be cleared by commands that delete or overwrite the contents of the key, including DEL, SET, GETSET and all the *STORE commands. This means that all the operations that conceptually alter the value stored at the key without replacing it with a new one will leave the timeout untouched. For instance, incrementing the value of a key with INCR, pushing a new value into a list with LPUSH, or altering the field value of a hash with HSET are all operations that will leave the timeout untouched.
如果用DEL, SET, GETSET会将key对应存储的值替换成新的,命令也会清除掉超时时间;如果list结构中添加一个数据或者改变hset数据的一个字段是不会清除超时时间的;如果想要通过set去覆盖值那就必须重新设置expire。
到此这篇关于如何利用 Redis 实现接口频次限制的文章就介绍到这了,更多相关Redis 实现接口频次限制内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
title:redis-login-limitation利用redis实现登陆次数限制,注解+aop,核心代码很简单.基本思路比如希望达到的要求是这样:在1mi
业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自
业务需求中经常有需要用到计数器的场景:譬如一个手机号一天限制发送5条短信、一个接口一分钟限制多少请求、一个接口一天限制调用多少次等等。使用Redis的Incr自
一.Redis实现分布式Session管理1.Memcached管理机制2.Redis管理机制1.redis的session管理是利用spring提供的sess
基于项目需求,我们要实现一个基于redis实现token登录验证,该如何实现呢:后端实现:1.引入redis相关的依赖org.springframework.b