三、Jedis操作
1、初次使用Jedis
-
第一步:引入jar包若使用maven工程,则
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency>
-
第二步:编写测试类测试
@Test public void test1(){ Jedis jedis = new Jedis("192.168.17.138", 6379);//指定主机ip和端口号 String ping = jedis.ping();//ping() 相当于 命令中的ping System.out.println(ping); jedis.close();//操作完成关闭连接 }
-
第三步:若编写上述代码执行出错,记得修改redis的配置文件或查看linux的防火墙
-
默认redis是只能本机连接的我们需要修改 redis.conf
#bind 127.0.0.1 -::1 # 1、把bind的限制注释掉 protected-mode no # 2、把本机保护改为no
-
禁用掉linux的防火墙
[root@localhost ~]# systemctl stop firewalld.service
-
2、Jedis中的方法
- 关于jedis在前面的文章也有介绍,所有在命令行中使用的命令都是方法的名称
- 前一篇文章连接: 十、Redis_檬柠猿的博客-CSDN博客
3、案例:完成一个手机验证码的功能
-
要求:
- 输入手机号,点击发送后随即生成6位数字码,2分钟有效
- 输入验证码,点击验证,返回成功或失败
- 每个手机号每天只能输入3次
-
实现:
public class PhoneCode { public static void main(String[] args) { //模拟验证码发送 verifyCode("13678765435"); //模拟验证码校验 //getRedisCode("13678765435","4444"); } //3 验证码校验 public static void getRedisCode(String phone,String code) { //从redis获取验证码 Jedis jedis = new Jedis("192.168.44.168",6379); //验证码key String codeKey = "VerifyCode"+phone+":code"; String redisCode = jedis.get(codeKey); //判断 if(redisCode.equals(code)) { System.out.println("成功"); }else { System.out.println("失败"); } jedis.close(); } //2 每个手机每天只能发送三次,验证码放到redis中,设置过期时间120 public static void verifyCode(String phone) { //连接redis Jedis jedis = new Jedis("192.168.44.168",6379); //拼接key //手机发送次数key String countKey = "VerifyCode"+phone+":count"; //验证码key String codeKey = "VerifyCode"+phone+":code"; //每个手机每天只能发送三次 String count = jedis.get(countKey); if(count == null) { //没有发送次数,第一次发送 //设置发送次数是1 jedis.setex(countKey,24*60*60,"1"); } else if(Integer.parseInt(count)<=2) { //发送次数+1 jedis.incr(countKey); } else if(Integer.parseInt(count)>2) { //发送三次,不能再发送 System.out.println("今天发送次数已经超过三次"); jedis.close(); } //发送验证码放到redis里面 String vcode = getCode(); jedis.setex(codeKey,120,vcode); jedis.close(); } //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; } }
4、SpringBoot整合Redis
- 仅仅需要导入场景启动器,即可
- 这部分内容在之前文章中也有介绍:https://blog.csdn.net/weixin_46203713/article/details/121375612