Redis——redisTemplate自定义序列化器

文章讲述了在SpringBoot项目中如何配置RedisTemplate,包括引入web依赖,创建配置类,设置RedisTemplate的连接工厂以及使用GenericJackson2JsonRedisSerializer进行JSON序列化处理,以实现键值对的存储和检索。

第一步:需要导入jackson的依赖,但是web依赖默认已经导入该依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

第二步:创建一个配置类

 @Bean

    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
    throws UnknownHostException
 {
    // 创建Template
             RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
            // 设置连接工厂
             redisTemplate.setConnectionFactory(redisConnectionFactory);
            // 设置序列化工具
             GenericJackson2JsonRedisSerializer jsonRedisSerializer =
        new GenericJackson2JsonRedisSerializer();
        // key和 hashKey采用 string序列化
             redisTemplate.setKeySerializer(RedisSerializer.string());
             redisTemplate.setHashKeySerializer(RedisSerializer.string());
        // value和 hashValue采用 JSON序列化
             redisTemplate.setValueSerializer(jsonRedisSerializer);
             redisTemplate.setHashValueSerializer(jsonRedisSerializer);
            return redisTemplate;
  }

### 创建和使用 `RedisTemplate` 自定义组件 #### 配置 Maven 依赖项 为了能够使用 `RedisTemplate`,项目中需包含 `spring-boot-starter-data-redis` 的依赖。这可以通过编辑项目的 `pom.xml` 文件来实现: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 此操作确保了应用程序可以访问到必要的类库来进行 Redis 数据交互[^4]。 #### 定义自定义 `RedisTemplate` 组件 通过创建一个新的 Java 类并标注为 `@Component` 或者更具体的 `@Configuration` 注解下的 Bean 方法,可以在 Spring 上下文中注册一个定制化的 `RedisTemplate` 实例。下面是一个简单的例子展示如何设置这个模板实例: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; @Configuration public class CustomRedisConfig { @Bean(name = "customRedisTemplate") public RedisTemplate<String, Object> customRedisTemplate(RedisConnectionFactory factory){ RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(factory); // 可选配置序列化器等 return template; } } ``` 这段代码展示了怎样利用构造函数注入的方式获取默认的 `RedisConnectionFactory` 并将其应用到新的 `RedisTemplate` 对象上[^3]。 #### 使用自定义 `RedisTemplate` 一旦上述配置完成,在任何需要的地方都可以自动装配该特定名称 (`customRedisTemplate`) 的 bean 来执行缓存读写操作。例如在一个测试案例里这样调用它: ```java @SpringBootTest @RunWith(SpringRunner.class) public class MyCustomRedisTest { @Autowired private RedisTemplate<String, Object> customRedisTemplate; @Test public void testCustomRedis(){ customRedisTemplate.opsForValue().set("testKey", "HelloWorld"); System.out.println(customRedisTemplate.opsForValue().get("testKey")); } } ``` 这里演示了一个基本的操作——向 Redis 中存储键值对以及检索其内容[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值