我想知道在Spring Boot 2上是否有某种方法可以从生成的缓存密钥中删除缓存名称。
这是我当前用于缓存数据的代码:
@Cacheable(value = "products", key = "#product.id")
public SimilarProducts findSimilarProducts(Product product){}
Spring Boot将字符串“ products”连接到我生成的每个密钥,以保存在缓存中。我已经尝试制作自己的密钥生成器,但是Spring Boot一直将字符串“ products”连接到生成的密钥。感谢您的关注。
例如,当我使用:
Product p = new Product();
p.setId("12345");
findSimilarProducts(p);
生成的密钥将是:
products::12345
我希望只有12345个。
答案 0 :(得分:1)
spring boot继续将字符串“ products”连接到生成的密钥。
Spring Boot(或与此相关的缓存抽象)不执行此操作,但是可以执行特定的Cache
实现。共享有关您的设置的更多细节会很有趣,但是我只能猜测您将Redis用作缓存存储,并且默认的CacheKeyPrefix
确实添加了缓存的名称。
答案 1 :(得分:0)
您可以(也许需要)禁用这样的键前缀。
@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory)
.cacheDefaults(defaultCacheConfig().disableKeyPrefix())
.build();
return cacheManager;
}