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 操作的

posted @ 2022-05-29 00:09  originyuan  阅读(434)  评论(0编辑  收藏  举报