从生成的缓存键中删除缓存名称

时间:2018-12-31 14:34:52

标签: java spring-boot caching

我想知道在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个。

2 个答案:

答案 0 :(得分:1)

  

spring boot继续将字符串“ products”连接到生成的密钥。

Spring Boot(或与此相关的缓存抽象)不执行此操作,但是可以执行特定的Cache实现。共享有关您的设置的更多细节会很有趣,但是我只能猜测您将Redis用作缓存存储,并且默认的CacheKeyPrefix确实添加了缓存的名称。

请查看the documentation

答案 1 :(得分:0)

您可以(也许需要)禁用这样的键前缀。

@Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
    RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory)
            .cacheDefaults(defaultCacheConfig().disableKeyPrefix())
            .build();
    return cacheManager;
}