@Cacheable in Spring Cache 在缓存外的redis 中存储值。我如何将它放入redis的缓存中?
@Cacheable in Spring Cache Stores value in redis outside cache . How do i put it inside cache in redis?
@Override
@Cacheable("stu")
public EmployeeEntity getEmployee(Integer id) {
return employeeDAO.findById(id).get();
}
以上代码将key以这种格式保存在redis中"stu::7"
这里 "stu" 是缓存的名称,7 是键,但它将缓存名称和 ID 作为一个键存储。
但我想以这种格式存储在 redis STU ->7
Stu 应该是缓存的名称,里面是所有的键值对。
这很奇怪,因为文档告诉我们
Default is "", meaning all method parameters are considered as a key, unless a custom keyGenerator() has been configured.
这很简单,但如果您之前没有尝试过,请尝试显式设置密钥和缓存名称
@Cacheable(value = "stu", key = "{#id}")
public EmployeeEntity getEmployee(Integer id) {
return employeeDAO.findById(id).get();
}
您可以将自定义密钥生成器设置为 @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 的名称。
@Override
@Cacheable("stu")
public EmployeeEntity getEmployee(Integer id) {
return employeeDAO.findById(id).get();
}
以上代码将key以这种格式保存在redis中"stu::7" 这里 "stu" 是缓存的名称,7 是键,但它将缓存名称和 ID 作为一个键存储。
但我想以这种格式存储在 redis STU ->7 Stu 应该是缓存的名称,里面是所有的键值对。
这很奇怪,因为文档告诉我们
Default is "", meaning all method parameters are considered as a key, unless a custom keyGenerator() has been configured.
这很简单,但如果您之前没有尝试过,请尝试显式设置密钥和缓存名称
@Cacheable(value = "stu", key = "{#id}")
public EmployeeEntity getEmployee(Integer id) {
return employeeDAO.findById(id).get();
}
您可以将自定义密钥生成器设置为 @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 的名称。