场景一:比如“抢口罩”活动,提交成功后,N天无需重复提交...

场景二:比如发表评论操作,一般是提交成功后,30min后才能再次评论...

功能实现

保证两点

  • 1=不能重复提交(用setIfAbsent塞入缓存,如果有指定的key,设值失败,只有没有指定的key时,设值才会成功,而且是原子性的操作,适合高并发的情景,N个并发过来的请求只会有一个进入方法体内
  • 2=成功塞入缓存后,设定TTL,保证只能在TTL时间后才能过期失效(也就意味着TTL之后才能再次提交)

Controller之中的方法

@RequestMapping(value = "repeat", method = RequestMethod.POST)public BaseResponse repeat(@RequestParam Integer userId, @RequestParam String content){BaseResponse response = new BaseResponse(StatusCode.Success);try{//TODO:第一次要评论成功,但是并发而来的提交上来的信息要间隔ttl才能再次塞入缓存Boolean res = redisTemplate.opsForValue().setIfAbsent(Constant.RedisRepeatKey + userId, content);if(res){log.info("----提交评论成功----");redisTemplate.expire(Constant.RedisRepeatKey+userId, 20, TimeUnit.SECONDS);//TODO:后续的操作~将评论信息塞入db}else{return new BaseResponse(StatusCode.Fail.getCode(), "您操作多余频繁,请20s后再次提交评论...");}}catch (Exception e){response  = new BaseResponse(StatusCode.Fail.getCode(), e.getMessage());}return response;}

基于Key过期失效实现 ‘N分钟内请勿重复提交“ 功能相关推荐

  1. 语音库构建_在10分钟内构建一个多功能语音助手

    语音库构建 Nowadays people don't have time to manually search the internet for information or the answers ...

  2. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  3. 基于 Laravel-Admin 在十分钟内搭建起功能齐全的后台模板

    http://laravelacademy.org/post/6468.html 1.简介 为 Laravel 提供后台模板的项目越来越多,学院君已陆续为大家介绍过Laravel Angular Ad ...

  4. 以太坊区块链同步_以太坊69:如何在10分钟内建立完全同步的区块链节点

    以太坊区块链同步 by Lukas Lukac 卢卡斯·卢卡奇(Lukas Lukac) Ethereu M 69:如何在10分钟内建立完全同步的区块链节点 (Ethereum 69: how to ...

  5. 如何在 20 分钟内给你的 K8s PaaS 上线一个新功能?

    作者 | 孙健波(天元) 来源|阿里巴巴云原生公众号 上个月,KubeVela 正式发布了, 作为一款简单易用且高度可扩展的应用管理平台与核心引擎,可以说是广大平台工程师用来构建自己的云原生 PaaS ...

  6. java heroku_使用Spring Boot和Heroku在20分钟内完成Java的单点登录

    java heroku 建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不 ...

  7. 使用Spring Boot和Heroku在20分钟内完成Java的单点登录

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! 大规 ...

  8. 15分钟内开始使用Amazon Web Services和全自动资源调配

    在等待一个新项目时,我想学习一些有用的东西. 而且由于在许多项目中我们需要评估和测试正在开发的应用程序的性能,而很少有足够的硬件来生成实际负载,因此我决定学习更多有关按需在云中按需配置虚拟机的知识,即 ...

  9. redis 用户订单缓存_Redis实战(12)-基于Key失效和定时任务实现订单支付超时自动失效...

    "商城平台用户下单"这一业务场景相信很多小伙伴并不陌生,在正常的情况下,用户在提交完订单/下完单之后,应该是前往"收银台"选择支付方式进行支付,之后只需要提供相 ...

  10. 如何实现生成订单30分钟内未支付则自动取消?

    如何实现生成订单30分钟内未支付则自动取消? 数据库轮询 JDK的延迟队列 Quartz 时间轮算法 使用消息队列 数据库轮询 不是很推荐的一种方式,需要定时扫描数据库,借助定时任务工具,如果是多服务 ...

最新文章

  1. springMVC4(9)属性编辑器剖析入参类型转换原理
  2. 为什么现在改用int.TryParse了
  3. Cocos2d-x使用iOS游戏内付费IAP(C++篇)
  4. join orcl的left_Oracle关联查询关于left/right join的那点事
  5. Collaborative Filter - Data Mining基础(ACM暑校)
  6. java阴阳师抽卡概率_《阴阳师》公布抽卡概率!看到数字我哭了
  7. fglrx 9.8与kernel 2.6.30
  8. 软件测试入坑建议:新手零基础怎么入门软件测试?你还缺这几份资料!
  9. php如何获取当前几号,PHP如何获取当前时间
  10. MongoVue 使用技巧
  11. Xmind8 下载与破解激活教程
  12. 关于2014年相关人脸检测识别的几个论文摘要翻译
  13. 查看对方使用什么手机型号
  14. 《VoIP技术构架(第2版·修订版)》一 第2章 企业电话的今天
  15. 简单体验阿里巴巴在线java诊断工具Arthas
  16. APP设计之启动页和广告页
  17. AI技术 | PIFuHD-由高清图片生成3D人物模型对BIM的启示
  18. tcp 与udp 的区别
  19. AnyConnect Windows系统的使用教程
  20. 【Linux】-- 操作系统进程的状态

热门文章

  1. html游戏网站设计报告,web前端课程设计以及报告,jquery+js+css+html
  2. 游戏软件提示dll丢失、缺少dll等解决方法及dll文件大合集
  3. MaxToBlende安装详细方法
  4. CFPS数据处理:少儿代答库与成人库匹配
  5. 门诊电子处方软件免费版本2.3
  6. 基于matlab仿真实例,基于MATLAB的新能源汽车仿真实例
  7. OpenCV之模板匹配
  8. 【AR优秀开源项目】ARCore项目工程汇总
  9. c语言 word转pdf,超简单的Word转换成PDF技巧,可惜很多人还不会
  10. wordpress好用的插件-wordpress插件自动采集伪原创发布插件免费