这里以3.2.0版本为例:
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>3.2.0version>
dependency>
如果Redis安装在云服务器中,注意配置服务器的防护墙安全组。
public static void main(String[] args) {
Jedis jedis = new Jedis("你的redis所在服务器的IP地址", 6379);
// 如果你的Redis设置了密码,执行这步
jedis.auth("你的redis密码");
String ping = jedis.ping();
System.out.println(ping);
jedis.close();
}
控制台打印:
PONG
说明连接成功。
Jedis封装了许多API可以用来对Redis进行操作,接下来是操作演示。
操作Redis的相关的命令在Jedis中都有与其对应的方法。
@Test
public void testString() {
String set = jedis.set("key1", "v1");
System.out.println(set);
String key1 = jedis.get("key1");
System.out.println(key1);
jedis.close();
}
控制台打印:
OK
v1
@Test
public void testList() {
jedis.lpush("list1", "v1", "v2", "v3");
List<String> list = jedis.lrange("list1", 0, -1);
list.forEach(System.out::println);
jedis.close();
}
控制台打印:
v3
v2
v1
@Test
public void testSet() {
Long sadd = jedis.sadd("set1", "tom", "jerry", "jack");
Set<String> set = jedis.smembers("set1");
System.out.println(set);
jedis.close();
}
控制台打印:
[tom, jack, jerry]
@Test
public void testHash() {
Map<String, String> map = new HashMap<>();
map.put("id", "1");
map.put("name", "Tom");
map.put("age", "18");
jedis.hset("map1", map);
String id = jedis.hget("map1", "id");
String name = jedis.hget("map1", "name");
String age = jedis.hget("map1", "age");
System.out.println("id = " + id);
System.out.println("name = " + name);
System.out.println("age = " + age);
jedis.close();
}
控制台打印:
id = 1
name = Tom
age = 18
@Test
public void testZSet() {
jedis.zadd("zset1", 100, "java");
jedis.zadd("zset1", 50, "c++");
jedis.zadd("zset1", 25, "php");
Set<String> set = jedis.zrange("zset1", 0, -1);
System.out.println(set);
jedis.close();
}
控制台打印:
[php, c++, java]
业务要求:
1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
2、输入验证码,点击验证,返回成功或失败
3、每个手机号每天只能输入3次
代码实现:
package com.jc;
import redis.clients.jedis.Jedis;
import java.util.UUID;
public class PhoneCodeTest {
private static Jedis jedis = new Jedis("180.76.116.222", 6379);
private static final int TIMEOUT_CODE = 60 * 2;
private static final int TIMEOUT_PHONE = 60 * 60 * 24;
static {
jedis.auth("576a6aWjj");
}
// 随机生成验证码
public static String getCode() {
String code = UUID.randomUUID().toString().replace("-", "").substring(0, 6);
return code;
}
// 发送验证码
public static void verifyCode(String phone, String code) {
String countKey = "VerifyCode" + phone + ":count";
String codeKey = "VerifyCode" + phone + ":code";
String count = jedis.get(countKey);
if (count == null) {
jedis.setex(countKey, TIMEOUT_PHONE, "1");
} else if (Long.parseLong(count) < 3) {
jedis.incr(countKey);
} else {
System.out.println("今天已经发送了3次验证码!");
jedis.close();
return;
}
// 设置验证码
jedis.setex(codeKey, TIMEOUT_CODE, code);
}
public static void checkVerifyCode(String phone, String code) {
String countKey = "VerifyCode" + phone + ":code";
String redisCode = jedis.get(countKey);
if (code.equals(redisCode)) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
}
public static void main(String[] args) {
verifyCode("123123123", getCode());
// checkVerifyCode("123123123", "b9dd1c");
jedis.close();
}
}