Реализация Spring Boot Cache с несколькими ключами - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть служба, которая ищет пользователя по id, email или username. Кроме того, он может обновить или удалить пользователя с помощью id.

@Service
public class UserService{


  public User getUserByEmail(String email) { ... }


  public User getUserByUsername(String usern) { ... }


  @Cacheable(cacheNames = "user", key = "#id")
  public User getUserById(Long id) { ... }


  @CachePut(cacheNames = "user", key = "#id")
  public User updateUser(Long id, String name, String phone) { ... }


  @CacheEvict(cacheNames = "user", key = "#id")
  public User deleteUserById(Long id) { ... }


}

Реализация кэширования отлично работает с этой текущей реализацией.

Теперь, что я должен сделать, чтобы реализовать кэширование и для функций getUserByEmail и getUserByUsername? Поскольку все функции получения указывают на одну и ту же кеш-таблицу user, есть ли способ сохранить кеш-таблицу с несколькими ключами (идентификатор, адрес электронной почты и имя пользователя), чтобы я мог использовать любой из ключей для получения кэшированных данных?

Если возможно, как это повлияет на мои @CachePut и @CacheEvict?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...