我有一项通过 、 或 搜索用户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
功能?由于所有 getter 函数都指向同一个缓存表user
,有没有办法使用多个键(id、电子邮件和用户名)维护缓存表,以便我可以使用任何键来获取缓存数据?
如果可能,这将如何影响我的@CachePut 和@CacheEvict?