项目中需要一个发送短信验证码的功能,但是需要限制每天发送限制码的次数,可以借助Redis的incr命令实现。

incr命令:

对存储在指定key的数值执行原子的加1操作。

如果指定的key不存在,那么在执行incr操作之前,会先将它的值设定为0

返回值是执行递增操作后key对应的值。

代码:

 long count = redisTemplate.opsForValue().increment(mobile.concat(RedisKeyConstant.SMS_COUNT),1);
if (count > 5 ) {throw new ServiceException("您的操作太过频繁!");
} else {// 验证码次数凌晨清除Duration duration = Duration.between(LocalDateTime.now(), LocalDate.now().plusDays(1).atTime(0,0,0));redisTemplate.expire(mobile.concat(RedisKeyConstant.SMS_COUNT),duration.toMinutes(),TimeUnit.MINUTES);}

由于Redis是串行执行的,所以increment会每次给key值的value加1,超过5次就抛出异常,提示操作频繁,否则就放过并设置有效时间到第二天凌晨。

Redis使用场景之——限制验证码发送次数相关推荐

  1. Redis——模拟手机验证码发送

    使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期 1.首先写一个函数随机产生六位验证码,使用random函数 //随机生成六位验证码publ ...

  2. [Redis] 使用Redis限制短信发送次数和发送频率

    简介 使用Redis实现比如 一小时内允许用户发送5次短信,一天内允许用户发送10条短信的需求,改需要怎么做呢 方法 / 步骤 方法一:使用redis : 格式 appc_verifyCode_202 ...

  3. springboot + mybatis-plus短信验证码每天发送次数

    springboot + mybatis-plus设置短信验证码每天发送次数 思路:(例如每天限制发送5次验证码) 1.首先我们要有相应的字段,个人建议:创建数据表(id,phone,amount,s ...

  4. Springboot+Redis接入腾讯云短信服务实现验证码发送

    目录 一.开通腾讯云短信服务 二.代码实现 三.测试 申请阿里云短信服务需要以上线APP或已备案网站,腾讯云短信服务可以使用微信公众号申请,注册个人微信公众号比较方便,改用腾讯云短信服务,参考官方SD ...

  5. Redis应用场景举例

    Redis应用场景举例 缓存 缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访问速度,还能大大降低数据库的压力. 作为Key-Value形态的内存数据库,Redis 最先会 ...

  6. 【缓存应用】谈谈redis应用场景

    关于redis应用场景总结 1.计数器相关应用场景 高并发的秒杀活动.分布式序列号的生成 限制手机短信发送数量.接口每分钟请求次数 工单号递增计数场景 可以使用redis的 incrby命令实现原子性 ...

  7. 转载:Redis 应用场景

    2019独角兽企业重金招聘Python工程师标准>>> 1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...

  8. 详解 Redis 应用场景及应用实例

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

  9. Redis 应用场景和应用实例详解

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月15日起,Redis的开发工作由VMware主 ...

最新文章

  1. 如何在windows下安装cygwin
  2. C# 枚举在项目中的应用总结
  3. python指定数据写入指定excel_python脚本——生成EXCEL,连接数据库,并将指定数据写入EXCEL...
  4. 秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据
  5. java对象和json对象之间互相转换
  6. 修改项目名称之后,访问不到项目的问题
  7. PHPCMS 前台模板集合
  8. ARM 是什么,ARM的意思,ARM介绍
  9. 聚合接口对接,加油卡,流量充值,话费充值
  10. Chrome网页接口测试工具
  11. 九大微博传播分析工具
  12. 揭秘小程序上线不到一周,每天2万销售额,究竟怎么做到的?
  13. linux大于3T硬盘多个分区,Ubuntu挂载3T硬盘或大于2T磁盘的方法
  14. 在html页面中引入jquery
  15. python做情感分析
  16. 洛谷 P3166 [CQOI2014]数三角形(gcd+组合计数)
  17. ElasticSearch某个节点与集群失联这个过程会发生什么?
  18. 想成为职场达人就必须要读懂的职场生存法则
  19. flash 脚本 2
  20. Gbox开源:比RN和WebView更轻的高性能动态化业务容器,解决首页动态化的痛点

热门文章

  1. RPA落地效果:2个月,每天运行6000+小时,节省上万人力——以宝尊为例
  2. 仿淘宝固定右侧侧边栏 发现一个和教学视频不一样的地方
  3. 经典算法之顺序查找(Sequential Search)
  4. 五步轻松搭建RPA卓越中心,助力集团公司加速数字化
  5. HDU 2109 JAVA
  6. php将数组变成字符串,php怎样将数组转成字符串
  7. VPM642学习之串口通信
  8. android系统息屏设置_不用羡慕了!安卓8.0手机都能用上息屏显示
  9. 使用Cisco packet tracer 软件配置基本的交换机和路由器的基本信息
  10. maximum xor subarray以及xor + trie专题