【Redis-Jedis】

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值