引入依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.1</version>
</dependency>
Jedis连接Redis
需要打开阿里云的防火墙,6379端口。
修改配置文件
protected-mode no
,改成no#bind 127.0.0.1 -::1
,注释了
然后用jedis测试链接
public static void main(String[] args) {
//创建Jedis对象
Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);
jedis.auth("xxxxxx");
//测试
String ping = jedis.ping();
System.out.println(ping);
}
简单测试
很多方法,在前面的文章,数据类型的常用命令里面都有,用法都一样的,可以照猫画虎的去用。这里就不一一演示了
public static void main(String[] args) {
//创建Jedis对象
Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);
jedis.auth("xxxxxx");
//获取所有的key
Set<String> keys = jedis.keys("*");
for(String key:keys){
System.out.println(key);
}
//添加
jedis.set("name","张三");
//获取
String name = jedis.get("name");
System.out.println(name);
//设置多个key-value
jedis.mset("k01","v1","k02","v2");
//获取多个值
List<String> keys2 = jedis.mget("k01", "k02");
for (String key:keys2){
System.out.println(key);
}
}
测试实例:模拟手机验证码
package com.lyd.jedis;
import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Random;
import java.util.Set;
public class JedisDemo1 {
public static void main(String[] args) {
//模拟验证码的发送
String code = verifyCode("18899988888");
System.out.println(code);
getRedisCode("18899988888","233456");
}
//3.验证码校验
public static void getRedisCode(String phone,String code){
//从redis中获取验证码
//创建Jedis对象
Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);
jedis.auth("xxxxxx");
//验证码的key
String codeKey ="VerifyCode"+phone+":code";
String coder = jedis.get(codeKey);
//判断
if(coder.equals(code)){
System.out.println("成功");
}else {
System.out.println("失败");
}
jedis.close();
}
//2.每个手机每天只能发送3次,验证码放到redis中,设置过期时间
public static String verifyCode(String phone){
//创建Jedis对象
Jedis jedis = new Jedis("xxx.xxx.xxx.xxx",6379);
jedis.auth("xxxxxx");
//手机发送次数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 {
//发送三次,不能发送了
System.out.println("今天已经发送超过3次了");
jedis.close();
return null;
}
//发送的验证码要放到redis里面
String vcode = getCode();
jedis.setex(codeKey,120,vcode);
jedis.close();
return vcode;
}
//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;
}
}