通过Redis、Memcache的 incr 原子操作防刷机制的使用差别
我的版本如下:
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 原子操作防刷机制的使用差别相关推荐
- php获取用户真实IP和防刷机制的实例代码
一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) {$ip = getenv('HT ...
- php设计短信验证码防刷机制几种方案
大部分产品都会涉及到短信验证码的使用界面,尤其是手机产品,短信验证码几乎已经成为所有手机产品的标准.因此,防止短信被刷成了每个产品经理和开发人员关心的问题. 没有体验过短信被刷问题的产品经理可能不会太 ...
- springboot接口防刷实现
本文主要介绍一种通过实现自定义注解,实现一种比较通用的接口防刷方式 前言 1.基本准备 jdk 8 redis springboot 2.7.6 2.基本思路 主要就是借助 redis 来实现接口的防 ...
- Springboot短信防刷接口实现及Dubbo、Zookeeper整合
需求分析 一.站在被攻击者的角度而言,首先要保证的是:其手机号短时间内不收到多条短信(假定为每分钟最多收到1条),而若攻击者以分钟为单位调用接口,对被攻击者而言也难以接受,故同样要保证的是:被攻击者在 ...
- 程序员放大招教你网站怎么做短信验证码防刷验证码机制-速码云
文章来源:http://www.4006026717.com 在我们开始发送了 短信验证码 的时候在前台中会出现一分钟的倒计时,进行了这个操作了之后,在这段时间之内,如果用户多次提交的话是无法发送请求 ...
- 【原创】对于防刷票机制方案的思考
[原创] 随着网络的发展,越来越多的评选活动采取了网络投票的制度,也因此刷票这个概念便出现在了大众面前.作为一个程序员如何维持网络投票的公正和严谨,如何尽可能的避免刷票出现的几率成为了开发此类程序不 ...
- Redis实现计数器---接口防刷---升级版(Redis+Lua)
[前言] Cash Loan(一):Redis实现计数器---接口防刷 中介绍了项目中应用redis来做计数器的实现过程,最近自己看了些关于Redis实现分布式锁的代码后,发现在Redis分布式锁中 ...
- Redis实现计数器---接口防刷
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 刚刚过去的双十一,大家有没有剁手,紧接着双十二马上又来临:看到全民大抢购的时候,做为一 ...
- java 使用Guava的RateLimiter做接口限流+redis的lua脚本做IP防刷
需求: 每个IP在指定的时间内可以请求某一个接口多少次,如果请求次数超过指定数,就返回拒绝信息 没做IP防刷之前,请求多了之后服务蹦了 做防刷之后 当然,还有限流 直接上代码 接口注解代码: imp ...
最新文章
- python 创建.txt的文件 并写内容到里面
- 逃课上网吧编程、玩摇滚的另类学生,逆袭成长为独角兽公司的 CTO
- 上班4年“武功”全废,想跳槽却被HR嘲讽,这位搞AI的硕士小哥心态崩了
- python【力扣LeetCode算法题库】面试题62- 圆圈中最后剩下的数字(约瑟夫环)
- (1110, “Column ‘arriveTime‘ specified twice“)
- 在 sql server 中,查询 数据库的大小 和 数据库中各表的大小
- 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- 最新安徽省二c语言题型_2020年成人高考考试考前1个月最新最全备考攻略+资料,考生必看,建议收藏!...
- mysql取值范围1-10_MySQL字段的取值范围
- 【优化部署】 基于matlab遗传算法求解移动传感器部署优化问题【含Matlab源码 1197期】
- 11_传智播客iOS视频教程_NS前缀和@符号
- 【板栗糖GIS】如何重复利用arcmap图层的符号样式
- php新浪微博 登录接口文档,php新浪微博登录接口用法实例,php新浪_PHP教程
- kodi 默认桌面_如何自定义Kodi新的默认外观河口
- 主动学习(Active Learning)概述及最新研究
- 华芯微特SWM260读写W25Q128
- 常规设置-Sinon.JS
- 求一个数的最小素因子外加快速分解质因子
- 用少量箭射爆气球,leetcode习题
- html网页设计一个简单的用户登录页面