文章目录

  • 1 pom.xml
  • 2 JedisTest
  • 3 手机验证码

1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.ccb</groupId><artifactId>jedis</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency></dependencies>
</project>

2 JedisTest

package com.ccb;import org.junit.Test;
import redis.clients.jedis.Jedis;import java.util.List;
import java.util.Set;public class JedisTest {public static void main(String[] args) {// 创建Jedis 对象Jedis jedis = new Jedis("172.16.201.128",6379);// 测试String value = jedis.ping();System.out.println(value);}@Testpublic void testString(){Jedis jedis = new Jedis("172.16.201.128",6379);// String 添加jedis.set("name","zhoumin");// String 获取String name = jedis.get("name");System.out.println(name);// 设置多个key-valuejedis.mset("k1","v1","k2","v2");List<String> mget = jedis.mget("k1", "k2");System.out.println(mget);// 获取keySet<String> keys = jedis.keys("*");for (String key: keys) {System.out.println(key);}}@Testpublic void testList(){Jedis jedis = new Jedis("172.16.201.128",6379);jedis.lpush("k11","lucy","mary","zhoumin");List<String> k11 = jedis.lrange("k11", 0, -1);System.out.println(k11);}@Testpublic void testSet(){Jedis jedis = new Jedis("172.16.201.128",6379);jedis.sadd("names","lucy","mary");Set<String> names = jedis.smembers("names");System.out.println(names);}@Testpublic void testHash(){Jedis jedis = new Jedis("172.16.201.128",6379);jedis.hset("user", "age", "20");String hget = jedis.hget("user", "age");System.out.println(hget);}@Testpublic void testZset(){Jedis jedis = new Jedis("172.16.201.128",6379);jedis.zadd("china",100,"shanghai");Set<String> china = jedis.zrange("china", 0, -1);System.out.println(china);}
}

3 手机验证码

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

分析:
1 生成随机6位数字验证码
random

2 验证码在2分钟内有效
把验证码放到redis里面,设置过期时间120秒

3 判断验证码是否一致
从redis里面获取验证码和输入的验证码进行比较

4 每个手机号每天只能发送3次验证码
incr 每次发送后+1
大于2的时候,提示不能发送

package com.ccb;import redis.clients.jedis.Jedis;import java.util.Random;public class PhoneCode {public static void main(String[] args) {// 通过手机号获取验证码// 127.0.0.1:6379> get VerifyCode18771105555:code// "769594"// verifyCode("18771105555");getRedisCode("18771105555","596653");}// 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 verifyCode(String phone){// 连接redisJedis jedis = new Jedis("172.16.201.128",6379);// 拼接key// 手机验证码发送次数keyString countKey  = "VerifyCode" + phone + ":count";// 验证码keyString codeKey = "VerifyCode" + 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){// 发送三次,不能再发送System.out.println("今天的发送数次已经超过三次了");jedis.close();}// 发送的验证码放到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("172.16.201.128",6379);// 验证码keyString codeKey = "VerifyCode" + phone + ":code" ;String redisCode = jedis.get(codeKey);if (redisCode.equals(code)){System.out.println("成功");}else {System.out.println("失败");}jedis.close();}}

1 首先执行发送验证码verifyCode到redis中,得到key VerifyCode18771105555:code

[chengwen@localhost ~]$ redis-server /etc/redis.conf
[chengwen@localhost ~]$ redis-cli
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> keys *1) "VerifyCode18771105555:count"2) "names"3) "china"4) "VerifyCode18771105555:code"5) "sname"

2 根据key 获取到验证码的值

127.0.0.1:6379> get VerifyCode18771105555:code
"596653"
127.0.0.1:6379> 

3 根据getRedisCode(“18771105555”,“596653”)进行验证码校验

成功Process finished with exit code 0

4 当达到三次以后再次发送验证码时

今天的发送数次已经超过三次了Process finished with exit code 0

5 Jedis 操作相关推荐

  1. jedis操作set_Java中使用Jedis操作Redis的示例代码

    使用java操作Redis需要jedis-2.1.0.jar,下载地址:jedis-2.1.0.jar 如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:c ...

  2. Jedis操作Redis数据库

    添加Maven依赖: 1 <dependencies> 2 <!-- 单元测试 --> 3 <dependency> 4 <groupId>junit& ...

  3. java jedis使用_Java中使用Jedis操作Redis

    Java中使用Jedis操作Redis 使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0 ...

  4. jedis set集合 java,使用Jedis操作String、List、Set、Map等常见数据 | zifangsky的个人博客...

    Jedis属于Java连接Redis的一种客户端.其操作方式跟原生的redis客户端命令类似.关于redis操作的基本命令可以参考这个文档:http://www.runoob.com/redis/re ...

  5. java dataset redis,利用Spring-Data-Redis和Jedis操作Redis缓存

    概述          Jedis是redis官方推荐的用于访问Java客户端,在https://github.com/xetorthio/jedis下载最新的jedis. 访问redis 1.访问简 ...

  6. 使用jedisPool管理jedis,使用jedis操作redis

    ps:jedis是redis在java中的客户端操作工具 package com.test; 2 3 import java.util.HashMap; 4 import java.util.Iter ...

  7. Lettuce替换Jedis操作Redis缓存

    Redis介绍及Mencached对比 Redis全称是远程字典服务,是一个Key-Value的存储系统,相比于很早之前一直使用的mencached,不单单提供了更多的类型支持. 数据类型上:menc ...

  8. jedis操作set_使用 JedisAPI 操作 Redis

    一 使用 JedisAPI 操作 Redis Jedis 集成了 redis 的一些命令操作,封装了对 redis 命令的 Java 客户端. 1 使用 Jedis 操作 Redis 单机版 1.1 ...

  9. 高并发核心技术Redis系列(七)--------Jedis操作Redis

    目录 一.Jedis操作Redis 1.1 Cache Aside Pattern(缓存模式) 1.2 引入Jedis 1.3 常用方法 1. Jedis连接到redis 2. String 3. K ...

  10. 最经典java使用Jedis操作Redis

    用Java操作Redis需要jedis-2.1.0.jar,下载地址: http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip 如果需要使用Redis ...

最新文章

  1. hdu A + B Problem II(大数相加,数组实现)
  2. maven WEB项目启动没问题访问页面就报错:org.apache.jasper.JasperException: Unable to compile class for JSP
  3. sql 不等于空_SQL的简单查询
  4. [8] ADB 查看日志
  5. java mail 503_邮件配置报503错误,发送失败
  6. ESXi与Linux主机配置syslog日志上传远程服务器
  7. python 内存溢出能捕获吗_python之记录一次内存溢出
  8. “C 不再是一种编程语言”
  9. NXP iMX8 SCFW和Boot Container Image编译
  10. 推荐1位AI产品经理求职信息(企业方可要简历),新增3个JD(共计59个、AI PM可内推)...
  11. 全国计算机大赛获奖奖品,国内含金量高的竞赛证书全汇总
  12. 普通商品期货手机开户流程
  13. 苹果手用计算机解锁手机密码,苹果手机密码忘了怎么解锁(解决方法大全)
  14. 安卓学习日记——Shortcut
  15. 《西瓜书》-11.特征选择与稀疏学习
  16. Bus Hound 工具抓取串口数据(PC端抓取USB转串口数据)
  17. STC32G 三电感电磁循迹小车
  18. XGBoost中如何防止过拟合
  19. Wi-Fi Orb 洞悉一切
  20. 【PM 产品】读人人都是产品经理有感 — Part one

热门文章

  1. php解析multilpart,使用PHP语言实现POP3邮件的解码
  2. 树莓派hdmi输出没声音_树莓派 4 开箱记
  3. alert中添加表格_Excel设置表格边框的几种方法,还有自动添加边框哟
  4. java tif格式图片_java给tif格式图片加文字水印?
  5. python安装MySQLdb包遇到的坑:EnvironmentError: mysql_config not found
  6. ie对java的设置字体_关于IE6幽灵字体 - JavaSwing的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. KFold、StratifiedKFold、GroupKFold的区别
  8. java int.parse_java数据类型转换,parseXXX(String)或valueOf(String)有什么区别?
  9. 科大讯飞和百得思维_最佳辩手陈铭力荐 讯飞智能学习机让学习不再难
  10. 网络库urillib3