我的版本如下:
Redis:3.2.100
Memcache:1.4.4

最近在处理服务器压力测试的时候,想到一个方案,在一定时间段内限制用户访问次数。具体的实现就是通过redis的院子操作increment 来实现计数器计数(memcache是通过incr方法)
这个可以作为很多防刷场景的策略,也可以用于确实业务上所需的限制比如1分钟内发验证码次数限制,防止刷验证码。

具体在实现过程中遇到个细微的差异:

  • redis的increment操作,如果对应的key不存在,会自动创建并且初始化为0,然后执行incement操作,那么首次对某个key执行increment操作时会返回1(不需要自己先判断是否存在这个key之类的操作),官方文档有说明:->点我查看官方文档<-

  • memcache的默认incr(key, by)操作,如果对应的key不存在,会报错。->点我查看官方wiki说明:<-

    不过如果你使用的是net.spy.memcached.MemcachedClient这个java客户端来操作memcache的话,它提供了更多的选择,可以通过这些接口传默认值、超时时间进去,让它自动帮你初始化不存在的key:

转载于:https://www.cnblogs.com/xiaocy66/p/10589260.html

通过Redis、Memcache的 incr 原子操作防刷机制的使用差别相关推荐

  1. php获取用户真实IP和防刷机制的实例代码

    一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) {$ip = getenv('HT ...

  2. php设计短信验证码防刷机制几种方案

    大部分产品都会涉及到短信验证码的使用界面,尤其是手机产品,短信验证码几乎已经成为所有手机产品的标准.因此,防止短信被刷成了每个产品经理和开发人员关心的问题. 没有体验过短信被刷问题的产品经理可能不会太 ...

  3. springboot接口防刷实现

    本文主要介绍一种通过实现自定义注解,实现一种比较通用的接口防刷方式 前言 1.基本准备 jdk 8 redis springboot 2.7.6 2.基本思路 主要就是借助 redis 来实现接口的防 ...

  4. Springboot短信防刷接口实现及Dubbo、Zookeeper整合

    需求分析 一.站在被攻击者的角度而言,首先要保证的是:其手机号短时间内不收到多条短信(假定为每分钟最多收到1条),而若攻击者以分钟为单位调用接口,对被攻击者而言也难以接受,故同样要保证的是:被攻击者在 ...

  5. 程序员放大招教你网站怎么做短信验证码防刷验证码机制-速码云

    文章来源:http://www.4006026717.com 在我们开始发送了 短信验证码 的时候在前台中会出现一分钟的倒计时,进行了这个操作了之后,在这段时间之内,如果用户多次提交的话是无法发送请求 ...

  6. 【原创】对于防刷票机制方案的思考

    [原创]  随着网络的发展,越来越多的评选活动采取了网络投票的制度,也因此刷票这个概念便出现在了大众面前.作为一个程序员如何维持网络投票的公正和严谨,如何尽可能的避免刷票出现的几率成为了开发此类程序不 ...

  7. Redis实现计数器---接口防刷---升级版(Redis+Lua)

    [前言] Cash Loan(一):Redis实现计数器---接口防刷  中介绍了项目中应用redis来做计数器的实现过程,最近自己看了些关于Redis实现分布式锁的代码后,发现在Redis分布式锁中 ...

  8. Redis实现计数器---接口防刷

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 刚刚过去的双十一,大家有没有剁手,紧接着双十二马上又来临:看到全民大抢购的时候,做为一 ...

  9. java 使用Guava的RateLimiter做接口限流+redis的lua脚本做IP防刷

    需求: 每个IP在指定的时间内可以请求某一个接口多少次,如果请求次数超过指定数,就返回拒绝信息 没做IP防刷之前,请求多了之后服务蹦了 做防刷之后 当然,还有限流 直接上代码  接口注解代码: imp ...

最新文章

  1. python 创建.txt的文件 并写内容到里面
  2. 逃课上网吧编程、玩摇滚的另类学生,逆袭成长为独角兽公司的 CTO
  3. 上班4年“武功”全废,想跳槽却被HR嘲讽,这位搞AI的硕士小哥心态崩了
  4. python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)
  5. (1110, “Column ‘arriveTime‘ specified twice“)
  6. 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
  7. 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
  8. 最新安徽省二c语言题型_2020年成人高考考试考前1个月最新最全备考攻略+资料,考生必看,建议收藏!...
  9. mysql取值范围1-10_MySQL字段的取值范围
  10. 【优化部署】 基于matlab遗传算法求解移动传感器部署优化问题【含Matlab源码 1197期】
  11. 11_传智播客iOS视频教程_NS前缀和@符号
  12. 【板栗糖GIS】如何重复利用arcmap图层的符号样式
  13. php新浪微博 登录接口文档,php新浪微博登录接口用法实例,php新浪_PHP教程
  14. kodi 默认桌面_如何自定义Kodi新的默认外观河口
  15. 主动学习(Active Learning)概述及最新研究
  16. 华芯微特SWM260读写W25Q128
  17. 常规设置-Sinon.JS
  18. 求一个数的最小素因子外加快速分解质因子
  19. 用少量箭射爆气球,leetcode习题
  20. html网页设计一个简单的用户登录页面

热门文章

  1. 常搓八个部位可以防衰老 - 健康程序员,至尚生活!
  2. 有关ArcGIS Server Server URL问题
  3. Kotlin学习笔记(3)- 语法
  4. Android 缓存机制
  5. Wannafly挑战赛18C 异或和
  6. AngularJs ng-route路由详解
  7. jquery与ajax的XMLHttpRequest对象介绍
  8. 浅谈PHP自动化代码审计技术
  9. Java并发编程:什么是线程安全,以及并发必须知道的几个概念
  10. 宅男程序员给老婆的计算机课程之8:控制器