范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot校验手机验证码例默认缓存数据淘汰策略redis缓存

  目录
  本案例实现功能:
  1 根据手机号码   生成6位数   的数字   验证码
  2 输入手机号和验证码,   判断输入的验证码是否正确  一 默认缓存1.1 主要代码
  1 添加依赖   			org.springframework.boot 			spring-boot-starter-cache 		
  2 启用缓存
  3 实体类  package com.qing.bean;  import lombok.Data;  @Data public class SMSCode {      private String phoneNum;     private String code;  }
  4 创建验证码的工具类  package com.qing.util;  import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Component;  @Component public class CodeUtils {     public String generate(String phoneNum) {         int hash = phoneNum.hashCode();         int encryption = 2022630;         //异或加密:一种通过异或运算进行加密的算法         //转成二进制,运算规则:相同为0,不同为1,再转成十进制         long result = hash ^ encryption;         long nowTime = System.currentTimeMillis();         result = result ^ nowTime;         long code = result % 1000000;         //处理有负数的情况         code = code < 0 ? -code : code;         //六位数:前面补0         String.format("%06d",code);         return code + "";     }      //获取缓存里的验证码     @Cacheable(key ="#phoneNum" ,value = "cacheCode")     public String getCacheCode(String phoneNum){         return null;     } }
  关于异或运算请点这里
  说明:getCacheCode()获取缓存里的验证码的方法,写在工具类这里是因为要使spring的@Cacheable这个注解生效,需要注入spring容器,该工具类在后面的ServiceImpl进行了注入,该方法返回的是注解@Cacheable的value属性值   cacheCode (   详见后面的测试   )
  5 service  package com.qing.service;  import com.qing.bean.SMSCode;  public interface SMSCodeService {      //发送验证码     String sendCode(String phoneNum);     //检查验证码     boolean checkCode(SMSCode smsCode); }
  6 serviceImpl  package com.qing.service.impl;  import com.qing.bean.SMSCode; import com.qing.service.SMSCodeService; import com.qing.util.CodeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CachePut; import org.springframework.stereotype.Service;  @Service public class SMSCodeServiceImpl implements SMSCodeService {       @Autowired     CodeUtils codeUtils;      //发送验证码     @Override     //只往里放,不往外读     @CachePut(key = "#phoneNum", value = "cacheCode")     public String sendCode(String phoneNum) {         return codeUtils.generate(phoneNum);     }       //比对验证码     @Override     public boolean checkCode(SMSCode smsCode) {         //取出内存中的验证码与传递过来的验证码比对,相同返回true         String code = smsCode.getCode();         String cacheCode = codeUtils.getCacheCode(smsCode.getPhoneNum());         return code.equals(cacheCode);     } }
  7 controller  package com.qing.controller;  import com.qing.bean.SMSCode; import com.qing.service.SMSCodeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*;  @RestController @RequestMapping("/sms") public class SMSCodeController {      @Autowired     private SMSCodeService smsCodeService;      @GetMapping("/{phoneNum}")     public String getCode(@PathVariable String phoneNum){          return smsCodeService.sendCode(phoneNum);     }      @PostMapping     public boolean checkCode(@RequestBody SMSCode smsCode) {         return smsCodeService.checkCode(smsCode);     } }1.2 测试
  1 生成验证码
  2 输入错的验证码验证
  3 输入正确的验证码
  4 再次生成验证
  二 Ehcache缓存
  在默认缓存案例的基础上做3个配置就行
  1 加依赖               net.sf.ehcache             ehcache         
  2 配置文件
  3 ehcache.xml放在resources下
  默认缓存
  配置新的缓存:   name   要和@CachePut注解的的value的属性值一样
  三 数据淘汰策略
  下图表示的信息:
  1 下面的时间分别表示最后一次访问是在   第几秒访问的
  2 上面的数字表示   访问了几次
  LRU:age   是上次访问离现在的时间最远的
  LFU:gender   访问次数是最少的
  四 redis缓存4.1 基础使用
  在默认缓存的基础上加2个配置
  1 导入依赖        org.springframework.boot      spring-boot-starter-data-redis 
  2 配置文件
  测试
  打开redis的服务端和客户端
  关于redis的安装和简单使用在这里
  生成一次验证码
  数据已经进到redis缓存里了
  缓存的名字即这个value属性的值 和 key 电话号码组合成一个新的key一起放进redis缓存里
  再生成一次验证码
  redis又多了一个缓存数据
  4.2 其他配置测有效时间 10s
  看一下测试效果
  10s之后缓存里的验证码失效了
  备注:   超过了有效时长,redis数据里就没有那个缓存了
  测前缀
  总结
  原文 https://blog.csdn.net/m0_45877477/article/details/125539400

中国篮坛历史五大传奇三分手大漠飞刀徐国翀第四,张三疯上榜三分球作为篮球比赛的一种常规武器,在这个小球盛行的时代已毫无疑问的的线性式进化,比如库里这样的球员和勇士这样的球队横空出世,让这个三分雨时代更加精彩。下面我们盘点一下中国篮坛历史射广厦迎历史最佳阵容!争冠路上只有一个对手!拆解广厦冠军相争冠分析第三期,咱们谈谈多年来的这支劲旅浙江广厦,前两期关于广东和辽宁的争冠分析,得到了网友和粉丝朋友的支持,让小编顿感鼓舞,本期依然绞尽脑汁,奋笔疾书,争取给大家带来有营养的文章夏威夷怎么来的,又有那些历史,美丽风景的背后又有怎样的危险?夏威夷群岛位于北太平洋中部,是波利尼西亚群岛中最大的次要群岛,共有大小岛屿132个。夏威夷这个词来自波利尼西亚语。公元4世纪左右一批波利尼西亚人利用独木桥破浪定居于此,并将该岛命名笔游古都9南苑海子朱雀迎宾一期海子景3月14日,天是一改阴霾而阳光明媚,大显春之暖阳,据预报那后几天可是不咋地,趁这空挡与同学一起走起游海子去。您见过乾隆爷海子骑马狩猎吗?我怎么就觉得这小路就是当年乾隆爷策马奔腾那条国乒拿下WTT大满贯历史首冠,是什么让WTT大满贯如此引人注目?WTT大满贯赛首个冠军属于国乒队。3月16日晚结束的WTT新加坡大满贯赛混双决赛,国乒组合王楚钦孙颖莎3比0横扫中国台北组合林昀儒郑怡静拿下冠军。王楚钦孙颖莎高举冠军奖杯本届大满贯美联储加息对世界的影响?我国国内有什么影响?美联储加息了,这个靴子终于落地了,加息是美国国内的事,也是世界的大事,这是美元体系造成的,美国加息,远在天边,但影响深远,对各国都有影响?今天说说加息对美国影响的行业?对我国的影响世界冠军任子威重新加回班级群,竟然还要交作业还记得为了让任子威专心备战冬奥此前老师把他踢出班级群吗但任子威又重新加入了班级群网友们纷纷都说和奥运冠军在一个群可以吹五年,嗯,毕竟是奥运冠军啊,所以当他回归到群聊之后,许多人都开爱自己,才能爱世界文袁运录一个人如果连自己都不爱,还会爱别人吗?像那种乖乖的孩子,总是逆来顺受,他连自己都不爱,他还会爱这个世界吗?虽然外表乖乖的,那是因为活在虚荣或虚假的状态。他觉得不是为自己而活世界首富埃隆马斯克发出灵魂拷问,人类家庭应该尽可能多要孩子据3月16日美国有线电视新闻网报道,美国国家航空航天局(NASA)证实了,小行星入侵警报系统(Scout)能够在近地天体接近地球时发出警报。这也是有史以来的第一次。3月11日,匈牙恰逢花开早,莫负春天好时光文一隅清宁本是烟花三月,空气里却已弥漫着夏天的味道,太阳炽热,温度升高,那一份不属于春天的热切,让人猝不及防。季节的热情高涨,春装还没来得及炫耀,太阳伞墨镜就开始闪亮登场。防护全套花开湖北诗意中国在这里郁见浪漫人间三月春风更暖花开更繁湖北孝感金卉庄园一场郁金香的浪漫之约开始了!中国红大岛松月阳光樱初美人每一个名字都美得令人悸动正如它的花语爱的表白永恒的祝福愿你星河入眼尽是世间温柔它诉说着
OPPO刷新快充速度纪录!正式发布长寿版150W240W超级闪充技术自2014年以来,OPPO闪充技术一直以来在手机快充领域的发展和创新有着领先的地位,同时从未在手机充电功率的探索中停下脚步,致力于给用户带来兼顾高效和安全的充电体验。OPPO今年在技术人员必须知道的手机验证码登录风险手机验证码登录是一种常见的应用登录方式,简单方便,不用记忆密码,市面上能见到的APP基本都支持这种登录方式,很多应用还把登录和注册集成到了一起,注册登录一气呵成,给用户省去了很多麻比亚迪至今没推出1000Km续航纯电,是因为电池技术落后了吗?这段时间,因受油价持续上涨影响,新能源汽车再次成为了很多人重点关注的行业。比亚迪虽作为国内新能源汽车的龙头企业,但很多人也都注意到一个问题,公司目前并没有推出1000km续航纯电。HelmetphoneBH51MNeo智能头盔,用科技力量为我们的骑行保驾护航骑行应该在我们的生活中或多或少都会接触到的,无论是从一场高质量的骑行还是到共享单车般的出行配一顶好的头盔还是很有必要的,起初小编对头盔的认知还停留在了摩托车标配的头盔时代,但是科技关于敷面膜还有谁做错了爱美这事,看谁不安排上,面膜作为必不可少的一项,关于多久敷一次,要不要清洗,时长等等,是不是还有疑惑的面膜大致分为补水的高营养抗衰的清洁的,补水面膜一周三到四次,高营养面膜一周一到30!国乒开门红,16岁小樊振东大爆发,进32强,刘国梁没看错WTT新加坡大满贯赛开打,在132决赛,国乒选手林诗栋出场,对阵迪奥,经过三局较量,林诗栋以30的比分战胜了对手,拿到一个32强名额,没有辜负刘国梁的信任,后者非常欣赏林诗栋!林诗兄弟齐心,其利断金!输赢一起扛是不是觉得很熟悉!没错,这句看似是口号的句子,其实是宏远的座右铭!不过,好像大多数的人,只记住前部分,但我要说的是精华是最后那五个字!世上没有常胜将军!宏远也不能例外!宏远也是会输今天,篮网与76人的比赛应该占了世界网络的头条篮网网打这个76人落花流水,把我们登哥也打蔫了,打老实了,把那大地也打老实了,自己人打自己人,装神专看住啊大帝,大D成了他的菜了,还好大帝从登哥那学了一手,碰瓷,光罚球就发了19个转移阵火!朱易网暴风波后晒美照心情大好,陈虹伊被骂到关评论我们知道,前段时间的冬奥会中,归国的年轻选手不止有滑雪界的谷爱凌,还有花滑选手朱易,这位刚回国就拿到冬奥会出战名额的选手,因其比赛资格获取过程的不明确而备受质疑,加上冬奥会中表现没运气爆棚!伊藤美诚避开国乒两大高手,刘国梁担忧,陈梦机会来了WTT大满贯比赛正赛终于要开始了,这次比赛的赛事规格极高,这是巴黎奥运周期第一项的国际性乒乓球大赛,冠军不仅会获得巨额奖金还会获得2000分的冠军积分,所以本次大赛吸引了全世界众多越过越有福气的女人,往往都很安静文时光了了01有人说不是每个人都能有福气一帆风顺的,每个人都有过去,每个人都有回头张望时不敢回首的岁月。但是好在一切都会过去,过去的日子终究不会是你人生的全部。每个人都期望自己的人