Spring Cache中的@Cacheable将值存储在cache外部的redis中。如何将它放入Redis的缓存中?

时间:2019-01-29 12:14:05

标签: java spring-boot caching redis spring-cache

@Override
@Cacheable("stu")
public EmployeeEntity getEmployee(Integer id) {

    return employeeDAO.findById(id).get(); 
} 

以上代码将密钥以以下格式“ stu :: 7”保存在redis中。 这里的“ stu”是缓存的名称,键7是密钥,但它将缓存的名称和id存储为一个密钥。

但是我想以这种格式存储在Redis STU中-> 7 Stu应该是缓存的名称,并且在所有键值对的内部。

2 个答案:

答案 0 :(得分:0)

这很奇怪,因为文档告诉了我们

  

默认值为“”,这意味着除非已配置自定义keyGenerator(),否则所有方法参数都被视为键。

这很简单,但是如果您之前没有尝试过,请尝试显式设置键和缓存名称

@Cacheable(value = "stu", key = "{#id}")
public EmployeeEntity getEmployee(Integer id) {
    return employeeDAO.findById(id).get(); 
} 

答案 1 :(得分:0)

您可以将自定义密钥生成器设置为@Cacheable批注,您可以根据需要对其进行自定义:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html#keyGenerator--

@Cacheable(value = "stu", keyGenerator = "customKeyGenerator")

customKeyGenerator是自定义密钥生成器bean的名称。