RedisTemplate 配置,自定义key生成策略,过期时间等 您所在的位置:网站首页 redistemplate自定义语句 RedisTemplate 配置,自定义key生成策略,过期时间等

RedisTemplate 配置,自定义key生成策略,过期时间等

2023-08-22 10:39| 来源: 网络整理| 查看: 265

package com.test.common.config;

import java.time.Duration;

import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheWriter; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;

import cn.hutool.json.JSONUtil;

/  * RedisTemplate 配置  *  * @author   */ @EnableCaching @Configuration @AutoConfigureBefore(RedisAutoConfiguration.class) public class RedisTemplateConfiguration {

  /**    * value 值 序列化    *    * @return RedisSerializer    */   @Bean   @ConditionalOnMissingBean(RedisSerializer.class)   public RedisSerializer redisSerializer() {     return new JdkSerializationRedisSerializer();   }   @Bean     public KeyGenerator cacheKeyGenerator() {         return (target, method, params) -> {             StringBuilder sb = new StringBuilder();             sb.append(target.getClass().getName());             sb.append(method.getName());             for (Object obj : params) {               // 由于参数可能不同, hashCode肯定不一样, 缓存的key也需要不一样                 sb.append(JSONUtil.toJsonStr(obj).hashCode());             }             return sb.toString();         };     }   @Bean(name = "redisTemplate")   @ConditionalOnMissingBean(RedisTemplate.class)   public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory, RedisSerializer redisSerializer) {     RedisTemplate redisTemplate = new RedisTemplate();     RedisKeySerializer redisKeySerializer = new RedisKeySerializer();     // key 序列化     redisTemplate.setKeySerializer(redisKeySerializer);     redisTemplate.setHashKeySerializer(redisKeySerializer);     // value 序列化     redisTemplate.setValueSerializer(redisSerializer);     redisTemplate.setHashValueSerializer(redisSerializer);     redisTemplate.setConnectionFactory(redisConnectionFactory);     return redisTemplate;   }

  @Bean   public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {     RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()       .entryTtl(Duration.ofSeconds(60*1));//过期时间,根据业务需要设置     return RedisCacheManager       .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))       .cacheDefaults(redisCacheConfiguration).build();   }

}  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有