用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));

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐