引入依赖
<!-- 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");//获取所有的keySet<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-valuejedis.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");//验证码的keyString 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");//手机发送次数keyString countKey = "VerifyCode"+phone+":count";//验证码的keyString codeKey ="VerifyCode"+phone+":code";//每个手机每天只能发三次String count = jedis.get(countKey);if(count==null){//没有发送次数,第一次发送//设置发送次数为1jedis.setex(countKey,24*60*60,"1");}else if(Integer.parseInt(count)<=2){//发送次数+1jedis.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;}}
