spring boot redis CacheManager
// 1.0
@Value("${erp.cache.expireation:32400}") // in seconds 9小时
private long cacheExpiration;
@Value("#{${erp.cache.expires:{'activity:goods':600,'ordercount':300}}}")
private Map<String, Long> expires;
@Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate); // 开启使用缓存名称最为key前缀 redisCacheManager.setUsePrefix(false); //这里可以设置一个默认的过期时间 单位是秒 redisCacheManager.setDefaultExpiration(cacheExpiration); // 设置缓存的过期时间 redisCacheManager.setExpires(expires); return redisCacheManager; }
//2.0 @Bean public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { //初始化一个RedisCacheWriter RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory); //设置CacheManager的值序列化方式为json序列化 RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer(); RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair .fromSerializer(jsonSerializer); RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig() .serializeValuesWith(pair); //设置默认超过期时间是600秒 defaultCacheConfig.entryTtl(Duration.ofSeconds(cacheExpiration));
//初始化RedisCacheManager
return new RedisCacheManager(redisCacheWriter, defaultCacheConfig);
}
来自:https://www.cnblogs.com/wjx6270/p/11568202.html
https://www.cnblogs.com/dadiwm321/p/springboot_redis.html
https://www.cnblogs.com/ffaiss/p/11435775.html
@Bean public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) { //spring cache注解序列化配置 RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getKeySerializer())) //key序列化方式 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(redisTemplate.getValueSerializer())) //value序列化方式 .disableCachingNullValues() //不缓存null值 .entryTtl(Duration.ofSeconds(cacheExpiration)); //默认缓存过期时间 // 对每个缓存名称应用不同的配置,自定义过期时间 Map<String, RedisCacheConfiguration> expires=new HashMap<>(); expires.put("activity:goods",redisCacheConfiguration.entryTtl(Duration.ofSeconds(600))); expires.put("ordercount",redisCacheConfiguration.entryTtl(Duration.ofSeconds(300))); RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisTemplate.getConnectionFactory()) .cacheDefaults(redisCacheConfiguration) .transactionAware() .initialCacheNames(expires.keySet()) // 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置 .withInitialCacheConfigurations(expires) .build(); return redisCacheManager; }
来自:https://www.cnblogs.com/wjx6270/p/11568202.html
https://www.cnblogs.com/dadiwm321/p/springboot_redis.html
https://www.cnblogs.com/ffaiss/p/11435775.html
@Override public void cacheMsgShop() { List<MsgUnreadCount> list=msgShopMapper.findShop(); if(list==null||list.size()==0)return; logger.info("--mgs size:{}",list.size()); final Cache cache = cacheManager.getCache(CACHE_NAME); if(cache == null){ return; } for (int i = 0; i < list.size(); i++) { MsgUnreadCount msg=list.get(i); long shopId=msg.getShopId(); int num=msg.getNum(); cache.put(shopId,num); } } @Override public int findByShopId(long shopId) { final Cache cache = cacheManager.getCache(CACHE_NAME); if(cache == null){ return 0; } Cache.ValueWrapper valueWrapper=cache.get(shopId); if(valueWrapper==null){ return 0; } return Integer.valueOf( valueWrapper.get().toString()); }