@Cacheable в Spring Cache Сохраняет значение в redis вне кэша.Как поместить его в кэш в Redis? - PullRequest
0 голосов
/ 29 января 2019
@Override
@Cacheable("stu")
public EmployeeEntity getEmployee(Integer id) {

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

Выше кода сохраните ключ в redis в этом формате «stu :: 7», здесь «stu» - это имя кэша, а 7 - это ключ, но он хранит имя и идентификатор кэша как один ключ.

но я хочу сохранить в этом формате в Redis STU -> 7 Stu должно быть имя кэша и внутри этой пары всех значений ключа.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Вы можете установить пользовательский генератор ключей в аннотацию @Cacheable, где вы можете настроить его по своему усмотрению: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html#keyGenerator--

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

Где customKeyGenerator - имя вашего пользовательского компонента генератора ключей.

0 голосов
/ 29 января 2019

Это странно, потому что документы говорят, что

По умолчанию "", что означает, что все параметры метода считаются ключом, если не был настроен пользовательский keyGenerator ().

Это тривиально, но попробуйте явно указать ключ и имя кэша, если вы не пробовали это раньше

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