• Spring Boot整合Redis


    SpringBoot 整合 Redis

    1、添加依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- redis依赖 commons-pool 这个依赖一定要添加 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
    </dependency>
    

    2、配置文件yml

    spring:
      redis:
        host: localhost
        password:
        database: 0
        port: 6379
        timeout: 10000
        lettuce:
          pool:
            max-active: 8
            max-idle: 8
            max-wait: 1000
            min-idle: 0
    

    3、配置类

    配置一个 RedisTemplate<String, Object>,并指定 keyvalue 的序列化器。

    /**
    * redis 配置类,主要配置序列化
    */
    @Configuration
    public class RedisConfig {
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
            // 连接工厂必须指定
            redisTemplate.setConnectionFactory(factory);
            // 字符串序列化器
            StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
            // json 序列化器,使用 jackson
            // 还有一种是 Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
            GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
            // key 和 hashkey 设置字符串序列化
            redisTemplate.setKeySerializer(stringRedisSerializer);
            redisTemplate.setHashKeySerializer(stringRedisSerializer);
            // 值设置 json 序列化
            redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
            redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
            redisTemplate.afterPropertiesSet();
            return redisTemplate;
        }
    }
    
    // 测试
    @Test
    public void test2() {
        redisTemplate.opsForValue().set("goods:2", "3c数码产品。。。");
    }
    

    image



    如果不配置序列化器,直接使用默认的,key 和 value 在客户端上显示会是乱码,客户端命令行也会操作错误

    如下:

    /**
    * redis配置类,主要配置序列化
    */
    @Configuration
    public class RedisConfig {
    
        @Bean
        public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory){
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
            redisTemplate.setConnectionFactory(factory);
            return redisTemplate;
        }
    }
    
    // 测试
    @Test
    public void test() {
        redisTemplate.opsForValue().set("user:1", "你好dfsdfsdf");
    }
    

    连接工具查看乱码
    image

    命令行读取失败
    image

    只能从代码里读取
    image

    当然这也并不算什么问题,因为操作数据都是使用 Java API 操作的

  • 相关阅读:
    注意:MagickReadImageBlob() 引发的问题
    Notepad++ 【自动完成】与【输入时提示函数参数】互相冲突,无奈
    收藏:png8和png24的根本区别
    【物理分辨率】与【逻辑分辨率】
    算法
    算法
    Linux 用户和文件
    Oracle索引技术研究
    Linux Socket
    Linux Socket
  • 原文地址:https://www.cnblogs.com/liuyiyuan/p/16322635.html
Copyright © 2020-2023  润新知