我有一个需求,需要用Redis替换mysql,所以我在JPA中有一个用于mysql的方法findByIdAndName。在Redis中,我存储了类似<整数,员工>(Employee是一个类,Integer是Id(所以如果我想根据Integer Id从redis中获取Employee对象,我可以很容易地使用下面提到的findById来获取这些对象,但如果我想基于EmployeeName和age来获取数据呢。
例如RedisImplementation:
public Employee findById(Integer id) {
Employee emp = redisTemplate.opsForHash().get("EMPLOYEE_HASH",Id);
}
我想添加一个方法,可以根据ID和名称获取数据,如findByIdAndName
您应该使用@Cacheable,因为它使您能够用EL表达式定义键。
示例如下:
@Cacheable(value = "items", key = "#id")
public Item getItem(Integer id) {
Item item = itemRepository.findById(id).orElseThrow(RuntimeException::new);
logger.info("Loading data from DB {}", item);
return item;
}
我确信@Cacheable支持像POJOS这样的复合键,而不是将基元作为键。此外,如果您没有显式指定键,它将采用具有注释的方法的参数作为键。
下面是一个非常好的文档/教程https://springhow.com/spring-boot-redis-cache/
希望我能帮上忙:(