Redis_Jedis 实践

文章目录

  • Redis_Jedis 实践
    • 1、完成一个手机验证码功能
    • 2、技术点
    • 3、代码实现

1、完成一个手机验证码功能

要求:

  1. 输入手机号,点击发送后随机生成 6 位数字码,2 分钟有效;
  2. 输入验证码,点击验证,返回成功或失败;
  3. 每个手机号每天只能输入 3 次。

2、技术点

  1. 生成随机 6 位数字验证码 ==> Random
  2. 验证码在 2 分钟内有效 ==> 把验证码放到 redis 里边,设置过期时间 120 秒
  3. 判断验证码是否一致 ==> 从 redis 获取验证码和输入的验证码进行比较
  4. 每个手机每天只能发送 3 次验证码 ==> incr 每次发送之后 +1;大于 2 的时候,提示不能发送

3、代码实现

//1、生成一个6位的数字验证码
public static String getCode(){Random random = new Random();String code = "";for (int i = 0; i < 6; i++) {int rand = random.nextInt(10);code += rand;}return code;
}
//2、每个手机每天只能发3次,验证码放到redis中,设置过期日期
public static void vertifyCode(String phone){//创建一个Jedis对象Jedis jedis = new Jedis("192.168.196.128", 6379);//拼接key//手机发送次数keyString countKey = "VertifyCode" + phone + ":count";//验证码keyString codeKey = "VertifyCode" + phone + ":code";//每个手机每天只能发送三次String count = jedis.get(countKey);if (count == null){//没有发送次数,第一次发送//设置发送次数是1jedis.setex(countKey, 24*60*60, "1");} else if (Integer.parseInt(count) <= 2){//发送次数+1jedis.incr(countKey);} else if (Integer.parseInt(count) > 2){//发送3次,不能再进行发送System.out.println("今天的发送次数已经超过三次");jedis.close();return;}//发送的验证码放到redis里边String vcode = getCode();jedis.setex(codeKey, 120, vcode);jedis.close();
}
//3、验证码校验
public static void getRedisCode(String phone, String code){//先从redis中获取验证码Jedis jedis = new Jedis("192.168.196.128", 6379);//验证码keyString codeKey = "VertifyCode" + phone + ":code";String redisCode = jedis.get(codeKey);//判断if (redisCode.equals(code)){System.out.println("成功");} else {System.out.println("失败");}
}
public static void main(String[] args) {//模拟验证码的发送//vertifyCode("17809298555");getRedisCode("17809298555", "4444");
}

Redis——Redis_Jedis实践相关推荐

  1. Redis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单

    阅读本文大约需要 16 分钟. 大家好,我是 Kaito. 这篇文章我想和你聊一聊 Redis 的最佳实践. 你的项目或许已经使用 Redis 很长时间了,但在使用过程中,你可能还会或多或少地遇到以下 ...

  2. Redis进阶实践之二如何在Linux系统上安装安装Redis

    2019独角兽企业重金招聘Python工程师标准>>> Redis进阶实践之二如何在Linux系统上安装安装Redis 一.引言 上一篇文章写了"如何安装VMware Pr ...

  3. Redis持久化实践及灾难恢复模拟

    Redis持久化实践及灾难恢复模拟 源地址:http://heylinux.com/archives/1932.html 另一篇:Redis主从自动failover http://ylw6006.bl ...

  4. Redis进阶实践之十六 Redis大批量增加数据

    原文:Redis进阶实践之十六 Redis大批量增加数据 一.介绍 有时候,Redis实例需要在很短的时间内加载大量先前存在或用户生成的数据,以便尽可能快地创建数百万个键.这就是所谓的批量插入,本文档 ...

  5. Redis进阶实践之十八 使用管道模式提高Redis查询的速度

    Redis进阶实践之十八 使用管道模式提高Redis查询的速度 原文:Redis进阶实践之十八 使用管道模式提高Redis查询的速度 一.引言 学习redis 也有一段时间了,该接触的也差不多了.后来 ...

  6. Redis进阶实践之一VMWare Pro虚拟机安装和Linux系统的安装

    2019独角兽企业重金招聘Python工程师标准>>> Redis进阶实践之一VMWare Pro虚拟机安装和Linux系统的安装 一.引言 设计模式写完了,相当于重新学了一遍,每次 ...

  7. 缓存之王 | Redis最佳实践开发规范FAQ

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 本文是来自阿里云2021版最新Redis最佳实践指南.文档可以在云栖社区下载. Redis–从问题 ...

  8. Redis最佳实践:业务层面和运维层面优化

    ​ 在上一篇文章:Redis为什么变慢了?常见延迟问题定位与分析,主要分析了Redis常见的导致变慢的场景以及问题定位和分析,主要是由业务使用不合理和运维不当导致的. ​ 我们在了解了导致Redis变 ...

  9. Redis最佳实践指南

    如果你是一位后端工程师,面试时八成会被问到 Redis,特别是那些大型互联网公司,不仅要求面试者能简单使用 Redis,还要深入理解其底层实现原理,具备解决常见问题的能力.可以说,熟练使用 Redis ...

最新文章

  1. 原核生物基因组三代数据(pacbio/nanopore)组装
  2. 虚拟化厂商VMware、微软和思杰的vGPU支持概述
  3. C#机房重构-总结(一)
  4. 关于SAP的“Sort key 排序码”
  5. pycharm pycharm中用matplolib的ax3.plot_surface画出的3D(三维图)(三维函数)不能旋转怎么办?
  6. OpenCV之邻域运算之最值滤波
  7. Python学习系列:PyCharm CE 安装与测试
  8. [SpringSecurity]web权限方案_用户认证_设置用户名密码
  9. Android隐藏状态栏和标题栏
  10. 英特尔CEO:将在行业整合背景下大力收购半导体企业
  11. String,StringBuffer,StringBulilder之间的区别
  12. java网上书店系统_基于Java的网上书店管理系统
  13. arcgis软件界面字体太小
  14. 使用excelJs.js,导出excel,可以设置序列以及下拉框的联动
  15. 自定义 View 之 QQ 个人主页视差动画效果
  16. flutter 仿网易云音乐(3)
  17. python语言平台无关_从零开始学Python自然语言处理(十二)——上下文无关文法...
  18. excel 数据透视表,笔记6,权亮
  19. impala shell
  20. C++数据结构 航空客运订票系统

热门文章

  1. 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(解读误区)
  2. 工作邦智慧水务云平台的十大系统
  3. 【查看】 - 内网(局域网)ip 、公网(外网)ip - ipconfig 、 tracert
  4. 激光雷达鼻祖Velodyne谋求合并求生:高层动荡 亏损不止
  5. 对 AbsoluteLayout 的一点理解
  6. 北漂那么多程序员,到了35岁以后该怎么选择往后的路?
  7. Hi,这有一份风控体系建设干货
  8. Python抓取淘宝手机销量排行榜
  9. UltraISO 制作U盘镜像步骤
  10. vmware启动虚拟机报错:Please make sure that the kernel module `vmmon‘ is loaded.