用redis来做spring cache时,发现最终生成的key中多了一个冒号,而且有一个空节点的存在:
经查看其源码发现,默认的生成key策略就是用的两个冒号:
package org.springframework.data.redis.cache;
@FunctionalInterface
public interface CacheKeyPrefix {
String compute(String cacheName);
static CacheKeyPrefix simple() {
return name -> name + "::";
}
}
这样导致在用redis desktop manager查看时,会多出一个空节点,解决办法是覆盖其默认的CacheKeyPrefix ,这是一个函数接口,覆盖如下:
RedisCacheConfiguration config1 = RedisCacheConfiguration.defaultCacheConfig(); // 生成一个默认配置,通过config对象即可对缓存进行自定义配置
config1 = config1
.entryTtl(Duration.ofMinutes(120)) // 设置缓存的默认过期时间,也是使用Duration设置
.disableCachingNullValues() // 不缓存空值
.computePrefixWith(name -> name + ":")//覆盖默认的构造key,否则会多出一个冒号
.serializeValuesWith(SerializationPair.fromSerializer(jackson2JsonRedisSerializer));