• 第七章Redis_Jedis_测试


    第7章-Redis_Jedis_测试

    7.1Jedis所需要的jar包

     
            redis.clients
            jedis
            3.2.0
        
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7.2连接 Redis 注意事项

    禁用 Linux 的防火墙:Linux(CentOS7)里执行命令
    systemctl stop/disable firewalld.service
    redis.conf 中注释掉 bind 127.0.0.1 ,然后 protected-mode no

    7.3步骤说明

    7.3.1新建一个maven工程

    在这里插入图片描述引入依赖
    在这里插入图片描述新建个测试类
    在这里插入图片描述
    host为Linux的ip地址,因为redis在Linux上,port为redis的默认端口号6379
    在这里插入图片描述点击运行
    在这里插入图片描述检查Linux的防火墙,将其暂时关闭

    在这里插入图片描述确保防火墙关闭状态
    在这里插入图片描述
    如果之前修改了,记得重新启动一下redis
    测试成功!
    在这里插入图片描述

    7.4测试相关的数据

    7.4.1 Jedis-API Key

    在这里插入图片描述
    演示:
    在这里插入图片描述

    7.4.2 Jedis-API String

    在这里插入图片描述

    7.4.3 Jedis-API List

    在这里插入图片描述

    7.4.4 Jedis-API set

    在这里插入图片描述

    7.4.5 Jedis-API hash

    在这里插入图片描述

    7.4.6 Jedis-API zset

    在这里插入图片描述
    在这里插入图片描述

    7.5完成一个手机验证码功能

    要求:
    1、输入手机号,点击发送后随机生成 6位数字码,2分钟有效
    2、输入验证码,点击验证,返回成功或失败
    3、每个手机号每天只能输入3次

    在这里插入图片描述

    public class JedisDemo1 {
        public static void main(String[] args) {
            //模拟验证码发送
            verifyCode("13678765435");
    
            //模拟验证码校验
            //getRedisCode("13678765435","4444");
        }
    
        //校验验证码
        public static void getRedisCode(String phone,String code){
            //从redis获取验证码
            Jedis jedis = new Jedis("192.168.200.130", 6379);
            //拼接一个字符串key
            String codeKey="VerifyCode"+phone+":code";
            String redisCode = jedis.get(codeKey);
            //判断
            if(redisCode.equals(code)){
                System.out.println("成功!");
            }else{
                System.out.println("失败");
            }
            jedis.close();
        }
    
        //2 每个手机每天只能发送三次,验证码放到redis中,设置过期时间120
        public static void verifyCode(String phone) {
            //连接redis
            Jedis jedis = new Jedis("192.168.44.168",6379);
    
            //拼接key
            //手机发送次数key
            String countKey = "VerifyCode"+phone+":count";
            //验证码key
            String codeKey = "VerifyCode"+phone+":code";
    
            //每个手机每天只能发送三次
            String count = jedis.get(countKey);
            if(count == null) {
                //没有发送次数,第一次发送
                //设置发送次数是1
                jedis.setex(countKey,24*60*60,"1");
            } else if(Integer.parseInt(count)<=2) {
                //发送次数+1
                jedis.incr(countKey);
            } else if(Integer.parseInt(count)>2) {
                //发送三次,不能再发送
                System.out.println("今天发送次数已经超过三次");
                jedis.close();
            }
    
            //发送验证码放到redis里面
            String vcode = getCode();
            jedis.setex(codeKey,120,vcode);
            jedis.close();
        }
    
    
        //得到6位随机验证码
        public static String getCode(){
            Random random = new Random();
            String code = "";
            for (int i = 0; i < 6; i++) {
                code+= random.nextInt(10);
            }
    
            return code;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    7.6Redis与Spring Boot 整合

    Spring Boot 整合Redis非常简单,只需要按如下步骤整合即可
    1、 在 pom.xml 文件中引入 redis 相关依赖

      <dependencies>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-data-redisartifactId>
            dependency>
    
            
            <dependency>
                <groupId>org.apache.commonsgroupId>
                <artifactId>commons-pool2artifactId>
                <version>2.6.0version>
            dependency>
        dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2、 application.properties配置redis 配置
    在这里插入图片描述 3、 添加 redis 配置类
    RedisConfig

    @EnableCaching
    @Configuration
    public class RedisConfig extends CachingConfigurerSupport {
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            RedisSerializer<String> redisSerializer = new StringRedisSerializer();
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
            ObjectMapper om = new ObjectMapper();
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(om);
            template.setConnectionFactory(factory);
    //key序列化方式
            template.setKeySerializer(redisSerializer);
    //value序列化
            template.setValueSerializer(jackson2JsonRedisSerializer);
    //value hashmap序列化
            template.setHashValueSerializer(jackson2JsonRedisSerializer);
            return template;
        }
    
        @Bean
        public CacheManager cacheManager(RedisConnectionFactory factory) {
            RedisSerializer<String> redisSerializer = new StringRedisSerializer();
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
    //解决查询缓存转换异常的问题
            ObjectMapper om = new ObjectMapper();
            om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
            jackson2JsonRedisSerializer.setObjectMapper(om);
    // 配置序列化(解决乱码的问题),过期时间600秒
            RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
                    .entryTtl(Duration.ofSeconds(600))
                    .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
                    .disableCachingNullValues();
            RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                    .cacheDefaults(config)
                    .build();
            return cacheManager;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    4、测试一下
    RedisTestController 中添加测试方法

    @RestController
    @RequestMapping("/redisTest")
    public class RedisTestController {
    
        @Autowired
        private RedisTemplate redisTemplate;
    
        @GetMapping
        public  String testRedis(){
            //设置redis
            redisTemplate.opsForValue().set("name","lucy");
            String  name = (String)redisTemplate.opsForValue().get("name");
            return name;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    启动springboot
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    返回Redis目录

  • 相关阅读:
    JVM下篇(四、JVM运行时参数)
    林业草原防火智能可视化平台
    用深度强化学习玩FlappyBird
    微信小程序uniapp校园租房指南房屋租赁系统java+python+nodejs+php
    【计算机图形学基础】投影矩阵
    设计模式 结构型模式 - 享元模式(七)
    033-从零搭建微服务-日志插件(一)
    redis的常用基础类型及操作
    需求开发思考
    微信公众号订阅消息
  • 原文地址:https://blog.csdn.net/qq_52166656/article/details/126651626