@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 的名称。