Jedis 操作 Redis

Jedis 常用操作

① 导入 jedis 所需的依赖

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>

② 连接 Redis 测试

/**
* @author xiexu
* @create 2022-04-12 12:14
*/
public class JedisDemo1 {

public static void main(String[] args) {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 测试
String ping = jedis.ping();
System.out.println(ping);
jedis.close();
}

}

Jedis 操作 Redis_jedis

返回 PONG,证明连接成功!

操作Key和String

// 操作key string
@Test
public void demo1() {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 清空当前数据库的所有数据
jedis.flushDB();

// 添加
jedis.set("name", "lucy");

// 获取
String name = jedis.get("name");
System.out.println("name = " + name);

// 设置多个key-value
jedis.mset("k1", "v1", "k2", "v2");
List<String> mget = jedis.mget("k1", "k2");
System.out.println("mget = " + mget);

// 获取所有的key
Set<String> keys = jedis.keys("*");
for (String key : keys) {
System.out.println("key = " + key);
}
jedis.close();
}

Jedis 操作 Redis_redis_02

操作list

// 操作list
@Test
public void demo2() {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 清空当前数据库的所有数据
jedis.flushDB();
jedis.lpush("key1", "lucy", "mary", "jack");
List<String> values = jedis.lrange("key1", 0, -1);
System.out.println("values = " + values);
jedis.close();
}

Jedis 操作 Redis_redis_03

操作set

// 操作set
@Test
public void demo3() {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 清空当前数据库的所有数据
jedis.flushDB();

jedis.sadd("names", "lucy");
jedis.sadd("names", "mary");
Set<String> names = jedis.smembers("names");
System.out.println("names = " + names);
jedis.close();
}

Jedis 操作 Redis_ip地址_04

操作hash

// 操作hash
@Test
public void demo4() {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 清空当前数据库的所有数据
jedis.flushDB();

jedis.sadd("names", "lucy");
jedis.hset("users", "age", "20");
String hget = jedis.hget("users", "age");
System.out.println("hget = " + hget);
jedis.close();
}

Jedis 操作 Redis_验证码_05

操作zset

// 操作zset
@Test
public void demo5() {
// 创建Jedis对象
Jedis jedis = new Jedis("IP地址", 6379);
// 清空当前数据库的所有数据
jedis.flushDB();

jedis.zadd("china", 100d, "shanghai");

Set<String> china = jedis.zrange("china", 0, -1);
System.out.println(china);
jedis.close();
}

Jedis 操作 Redis_验证码_06

Jedis 实例 - 手机验证码

/**
* @author xiexu
* @create 2022-04-13 10:31
*/
public class PhoneCode {

public static void main(String[] args) {
// 模拟验证码发送
String phone = "15814963051";
String code = verifyCode(phone);

// 模拟验证码校验
getRedisCode(phone, code);
}

// 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.让每个手机每天只能发送三次,验证码放到redis中,设置过期时间2分钟
public static String verifyCode(String phone) {
// 连接redis
Jedis jedis = new Jedis("IP地址", 6379);
// 拼接key
// 手机发送次数key
String countKey = "VerifyCode" + phone + ":count";
// 验证码key
String codeKey = "VerifyCode" + phone + ":code";

String count = jedis.get(countKey);
if (count == null) {
// 没有发送次数,第一次发送
// 设置发送次数是1
// 24 * 60 * 60 是一天的秒数
jedis.setex(countKey, 24 * 60 * 60, "1");
} else if (Integer.parseInt(count) <= 2) {
// 发送次数+1
jedis.incr(countKey);
} else {
System.out.println("今天发送次数已经超过三次!!!");
jedis.close();
return null;
}

// 发送验证码放到redis里面
String vcode = getCode();
jedis.setex(codeKey, 120, vcode);
jedis.close();
return vcode;
}

// 3.验证码校验
public static void getRedisCode(String phone, String code) {
// 连接redis
Jedis jedis = new Jedis("IP地址", 6379);
// 从redis获取验证码
// 验证码key
String codeKey = "VerifyCode" + phone + ":code";
String redisCode = jedis.get(codeKey);
// 判断
if (redisCode.equalsIgnoreCase(code)) {
System.out.println("成功");
} else {
System.out.println("失败");
}
jedis.close();
}

}