Redis-07-Redis的java应用(Jides)

1:Jedis导包

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>3.2.0</version>
</dependency>

2:java使用Jedis连接redis注意事项

  • redis.conf中注释掉bind 127.0.0.1 ,然后 protected-mode no 并重启redis
  • 禁用Linux的防火墙,或者开放对应端口:Linux(CentOS7)里执行命令:
    • 查看防火墙状态:systemctl status firewalld
    • 关闭防火墙命令:systemctl stop/disable firewalld.service

3:Jedis的hellowrold

 @Test
    public void test1(){
        //                              ip地址             端口号
        Jedis jedis = new Jedis("192.168.0.113",6379);
        String ping = jedis.ping();

        System.out.println(ping);
        jedis.close();
    }

4:使用jedis测试相关数据类型

1:key

//测试key的操作
    @Test
    public void testKey(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);

        }


        System.out.println(jedis.exists("k1"));
        System.out.println(jedis.ttl("k1"));
        jedis.close();
    }

2:String

//测试Sting类型
    @Test
    public void testString(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        jedis.set("str1","hello");
        jedis.mset("str2","world","str3","zhangsan");
        List<String> mget = jedis.mget("str1", "str2", "str3");
        System.out.println(mget);

        jedis.close();
    }

3:list

//测试list类型-双向链表
    @Test
    public void testList(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        jedis.lpush("list1","1","2","3","4");
        List<String> list1 = jedis.lrange("list1", 0, -1);
        for (String s : list1) {
            System.out.println(s);

        }

        jedis.close();
    }

4:zset

 //测试set类型-无序集合
    @Test
    public void testSet(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        jedis.sadd("set1","hello","world","hello");
        Set<String> set1 = jedis.smembers("set1");
        for (String s : set1) {
            System.out.println(s);
        }

        jedis.close();
    }

5:hash

 //测试hash类型-存储对象
    @Test
    public void testHash(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        jedis.hset("hash1","name","zhangsan");
        jedis.hset("hash1","age","22");
        Map<String,String> map = new HashMap<>();
        map.put("name","李四");
        map.put("age","23");
        jedis.hset("hash2",map);

        Map<String, String> hash1 = jedis.hgetAll("hash1");
        System.out.println(hash1);
        Map<String, String> hash2 = jedis.hgetAll("hash2");
        System.out.println(hash2);

        jedis.close();
    }

6:zset

//测试zset类型
    @Test
    public void testZet(){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        jedis.zadd("zset1",100,"java");
        jedis.zadd("zset1",200,"mysql");
        jedis.zadd("zset1",300,"php");
        Set<String> zset1 = jedis.zrange("zset1", 0, -1);
        for (String s : zset1) {
            System.out.println(s);
        }


        jedis.close();
    }

5:jedis实例-手机验证码功能

要求:

  1. 输入手机号,点击发送后随机生成6位数字码,2分钟有效
  2. 输入验证码,点击验证,返回成功或失败
  3. 每个手机号每天只能输入3次
import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.Random;

/**
 * Description:
 * 要求:
 * 1、输入手机号,点击发送后随机生成6位数字码,2分钟有效
 * 2、输入验证码,点击验证,返回成功或失败
 * 3、每个手机号每天只能输入3次
 * Date:       2022/3/5 - 上午 1:29
 * author:     wangkanglu
 * version:    V1.0
 */
public class PhoneCode {

    //这是一个程序入口
    public static void main(String[] args) {
        //生成验证码
//        verifyCode("123456789");

        //验证验证码
        getRedisCode("123456789","822540");
    }

    //1:获取六位数验证码
    public static String getCode(){
        StringBuilder code = new StringBuilder();

        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            code.append(random.nextInt(10));
        }

        return code.toString();
    }

    //2:每个手机号每天只能输入三次,并且验证码在2分钟内有效

    public static void verifyCode(String phone){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        //设置验证码次数的key
        String phoneCodecount = "code_"+phone+"_count";
        //设置验证码的key
        String phoneCode = "code_"+phone;

        if(!jedis.exists(phoneCodecount)){
            //查看如果验证码次数不存在就增加
            jedis.setex(phoneCodecount,24*60*60,"1");
        }else if (Integer.valueOf(jedis.get(phoneCodecount))<2){
            //如果验证码次数没达到3次,那么久增加
            jedis.incrBy(phoneCodecount,1);
        }else {
            System.out.println("今日验证码次数已达到3次");
            jedis.close();
            return;
        }

        //生成验证码放进redis中
        String code = getCode();
        jedis.setex(phoneCode,120,code);
        System.out.println("生成新的验证码:"+code);
        jedis.close();
    }

    //3:对传进来的验证码进行验证
    public static void getRedisCode(String phone,String code){
        Jedis jedis = new Jedis("192.168.0.113",6379);
        //设置验证码的key
        String phoneCode = "code_"+phone;
        //从redis中获取验证码
        String phoneCODE = jedis.get(phoneCode);
        if(code.equals(phoneCODE)){
            System.out.println("成功");
        }else {
            System.out.println("失败");
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值