接口幂等性就是用户对于同一操做发起的一次请求或者屡次请求的结果是一致的,不会由于屡次点击而产生了反作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,可是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条...,这就没有保证接口的幂等性redis
核心是判断两次请求是否为同一操做。一般方法是解析请求全部参数,判断参数是否彻底一致。若是两次参数同样,则是重复提交。还有是经过惟一索引来判断,如发货操做,一笔订单只能发货一次。因此能够经过惟一订单号来判断两次是否为重复提交。markdown
场景:限制单个用户每一个小时只能访问某个接口100次网络
实现:将用户的每次访问时间记录在redis中,每次访问获取第100前的访问时间。若是未能获取到访问时间,则说明该用户未访问100次。若是获取到时间,则判断该时间是否在一小时内,若是是在一小时内,则该用户须要限流,不能再访问了。若是不在一小时内,则从redis移除该访问记录。spa