redis cache in spring boot + hibernate + PostgreSQL

 
 
 
Сообщения:17
Добрый день.

Возникло пару вопросов по redis cache в spring boot + hibernate + PostgreSQL.
Заранее извиняюсь за nubовские вопросы -)

1. Собственно, код сервис-метода, возвращающего объект по id:
@Cacheable(value = "category", key = "#id")
	public CategoryCost findCategoryCostById(Integer id) {
		
		LOGGER.info("Find CategoryCost by id = {} ", id);
		
		CategoryCost categoryCost = categoryRepo.findOne(id);

		if (categoryCost == null) {
			throw new MyResourceNotFoundException(String.format("category cost with id= %s not found", id));
		}
		return categoryCost;
}


При первом запросе в базу заполняется кеш с ключом "#id" объектом categoryCost (с использованием сериализации).

Что такое value = "category"? Ведь value - это должен быть объект (пусть и серилизованный в строку), или это просто указатель на него?. Как он связан с возвращаемым из метода объектом categoryCost? Просто кучу инфы в en/ru инете по редису читал, но пока не врубился. Но это работает. При повторном запросе в базу не лезет.

2. Вот еще один метод getByCategory:
@Cacheable(value = "category", key = "#category")
	public CategoryCost findCategoryCostByCategory(Category category) {
		
		LOGGER.info("Find CategoryCost by category = {} ", category.name());
		
		CategoryCost categoryCost = categoryRepo.findByCategory(category);

		if (categoryCost == null) {
			throw new MyResourceNotFoundException(String.format("category cost with category %s not found", category));
		}

		return categoryCost;
}


Тут уже другой ключ, но value тот же. Т.е., я так понимаю, value можно обзывать как хочешь?
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет