Redis学习记录------Jedis操作Redis6(六)
创建maven工程,引入依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
测试链接Jedis,在配置文件的讲解时,
1.需要将bind注释掉
2.需要将protected-mode本机访问保护模式设置为no
否则只能让本机连,其他机器连不了,之后重启Redis,同时需要将防火墙打开。
public class JedisDemo1 {
public static void main(String[] args) {
//创建Jedis对象,IP,端口
Jedis jedis = new Jedis("192.168.44.168",6379);
//测试
String value = jedis.ping();
System.out.println(value);
}
}
获取所有key
@Test
public void demo(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
//获取所有key
Set<String> keys = jedis.keys("*");
for(String key :keys){
System.out.println(key);
}
}
String
@Test
public void demo(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
//String
jedis.set("name","zhaoyun");
String name = jedis.get("name");
System.out.println(name);
//设置多个key
jedis.mset("k1","k1_value","k2","k2_value");
List<String> mget = jedis.mget("k1", "k2");
System.out.println(mget);
//获取所有key
Set<String> keys = jedis.keys("*");
for(String key :keys){
System.out.println(key);
}
}
List
@Test
public void demList(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
jedis.rpush("k1","v1","v2","v3");
String v3 = jedis.rpop("k1");
System.out.println(v3);
//取全部值
List<String> k1 = jedis.lrange("k1", 0, -1);
System.out.println(k1);
}
Set
@Test
public void demSet(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
jedis.sadd("k1","v1","v2","v3");
//取出全部值
Set<String> k11 = jedis.smembers("k1");
System.out.println(k11);
}
hash
@Test
public void demhash(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
HashMap<String,String> map = new HashMap<>();
map.put("name","zhangssan");
map.put("age","18");
map.put("sex","boy");
jedis.hset("k1",map);
jedis.hset("k1","cm","188");
//取出全部值
Set<String> k1 = jedis.hkeys("k1");
System.out.println(k1);
}
ZSet
@Test
public void demZset(){
//创建Jedis对象
Jedis jedis = new Jedis("192.168.44.168",6379);
jedis.zadd("k1",100d,"shanghai");
//取出全部值
jedis.zrange("k1",0,-1);
}
案例
输入手机号,点击发送后,随机生成6位数字验证码,2分钟有效
输入验证码,点击验证,返回成功或失败
每个手机号每天只能输入3次
/**
* 手机验证码案例
* 验证码两分钟过期
* 一个手机一天只能接收3次
*/
public class JedisPhoneCodeDemo {
public static void main(String[] args) {
//模拟手机验证码发哦那个
verifyCode("1111");
//模拟验证码校验
getRedisCode("1111","96578");
}
//生成6位数字验证码
public static StringBuffer getCode(){
Random random = new Random();
StringBuffer code = new StringBuffer();
for (int i = 0; i < 6; i++) {
int i1 = random.nextInt(10);
code.append(i1);
}
return code;
}
//让每个手机只能发三次,验证码放到redis中,设置过期时间
public static void verifyCode(String phone){
Jedis jedis = new Jedis("192.168.44.168",6379);
//拼接key
//手机发送次数key
String phoneKey = phone+":Count";
String s = jedis.get(phoneKey);
if (s == null){
jedis.setex(phoneKey, 24*60*60,"1");
}else if (Integer.parseInt(s) <= 2){
jedis.incr(phoneKey);
}else {
System.out.println("发送次数达到上限");
jedis.close();
return;
}
//验证码key
StringBuffer code1 = getCode();
String codeKey = phone+":Code";
jedis.setex(codeKey, 60*2,String.valueOf(code1));
jedis.close();
}
//验证码校验
public static void getRedisCode(String phone,StringBuffer code){
Jedis jedis = new Jedis("192.168.44.168",6379);
String codeKey = phone+":Code";
String Code = jedis.get(codeKey);
if (Code.equals(code)){
System.out.println("成功");
}else {
System.out.println("失败");
}
jedis.close();
}
}