Jedis操作
介绍
Jedis是Redis的客户端工具,通过java操作Redis
Jedis使用
1、导入Maven依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
2、Redis连接
// (Redis访问的主机地址(如:Linux), 端口号 6379 )
Jedis jedis = new Jedis("192.168.239.129", 6379);
3、使用Jedis进行相关操作
public class RedisTest {
@Test
public void test1() {
Jedis jedis = new Jedis("192.168.135.100", 6379);
//向Redis中加入数据
jedis.set("k1", "String");
//获取
jedis.get("k1", "String");
//设置多个
jedis.mset("k1", "String1","k2", "String2");
//获取多个
List<String> list = jedis.mget("k1", "k2");
//读取Redis中所有键值
Set<String> keys = jedis.keys("*");
for(String key : keys){
system.out.println(key);
}
Set<String> s1 = jedis.smembers("s1");
System.out.println(s1);
}
}
- List
//List操作
Jedis jedis = new Jedis("192.168.239.129", 6379);
//从左加入
jedis.lpush("key1", "lucy", "mary", "jack");
List<String> key1 = jedis.lrange("key1", 0, -1);
System.out.println(key1);
- Set
//set
jedis.sadd("name", "lucy");
jedis.sadd("name", "jack");
Set<String> smembers = jedis.smembers("name");
System.out.println(smembers);
//[jack, lucy]
//删除 srem
- Hash
jedis.hset("users", "age", "20");
String hget = jedis.hget("users", "age");
System.out.println(hget);
//20
HashMap<String, String> map = new HashMap<String, String>();
map.put("tel", "123456789");
map.put("email", "123");
jedis.hmset("h1", map);
List<String> hmget = jedis.hmget("h1", "tel", "email");
for(String s : hmget){
System.out.println(s);
}
//123456789
//123
- zset
jedis.zadd("china", 100, "shanghai");
Set<String> china = jedis.zrange("china", 0, -1);
System.out.println(china);
//[shanghai]
4、jedis实例: 手机验证码
随机生成6位验证码,2分钟内有效 【 Random() ,将验证码放到Redis中,设置过期时间为120s】
输入验证码,点击验证,返回成功或失败
每个手机每天只能3次 【redis中的incr方法,每次加一,大于2,不能发送】
//生成验证码
public String generateVerification(String phoneNum) {
StringBuilder code = new StringBuilder();
String count = null;
Jedis jedis = new Jedis("192.168.135.100", 6379);
String codeKey = phoneNum + ":code";
String countKey = phoneNum + ":count";
// 获取验证码次数
count = jedis.get(countKey);
//判断次数
if (count == null) {
jedis.set(countKey, "3");
jedis.close();
return generateVerification(phoneNum);
} if (Integer.parseInt(count) > 0) {
//生成六位数验证码
Random random = new Random();
for (int i = 0; i < 6; i++) {
code.append(String.valueOf(random.nextInt(10)));
}
//将生成验证码的次数减一
jedis.decr(countKey);
//验证码加入到key中
jedis.setex(codeKey, 120, code.toString());
System.out.println(jedis.get(codeKey));
} else {
System.out.println("生成验证码次数超过三次");
jedis.close();
return "";
}
jedis.close();
return code.toString();
}
//验证码校验
public String getVerificationCode(String phoneNum) {
Jedis jedis = new Jedis("192.168.135.100", 6379);
String codeKey = phoneNum + ":code";
//Redis,当key不存在时,返回-2
if (jedis.ttl(codeKey) == -2) {
jedis.close();
System.out.println("验证码已过期或未生成验证码");
return "";
}
String rediscode = jedis.get(codeKey);
System.out.println("验证码:" + code);
// if(rediscode.equala(code)){
// System.out.println("成功");
// }else{
// System.out.println("失败");
// }
return code;
}
@Test
public void test1() {
String phoneNum = "10086";
generateVerification(phoneNum);
getVerificationCode(phoneNum);
}