Приложение Spring Boot с кэшем Redis без базы данных

#spring #spring-boot #caching #apache-kafka #redis

#весна #пружинный ботинок #кэширование #апач-кафка #редис

Вопрос:

Я использую приложение Spring Boot , у меня есть требования ниже.

Я хотел бы кэшировать все строки из определенной таблицы(здесь я должен преобразовать строку в определенный формат xml и сохранить ее в кэше), а затем, если с этой строкой произойдет какое-либо обновление другим приложением, тогда в моем приложении я получу сообщение из темы Кафки. Поэтому я хочу обновить существующий xml в кэше последним xml-сообщением из темы Кафки. Здесь я хочу использовать кэш Redis, пока что все примеры, которые я видел, касаются только базы данных. Поэтому я хочу знать, как я могу заполнить кэш из сообщения темы Кафки(или любого xml-сообщения).Можно ли кэшировать xml-сообщение при весенней загрузке с помощью кэша Redis? Может ли какой-нибудь орган поделиться идеей или каким-либо практическим примером?

Комментарии:

1. Что вы имеете в виду под «иметь дело только с базой данных»? Redis-это база данных значений ключей , используемая в качестве кэша… Формат сериализации (XML) не имеет значения. Да, вы должны иметь возможность анализировать запись и хранить/отправлять ее куда угодно. Какие конкретные ошибки вы получаете при попытке?

2. @OneCricketeer Здесь, имея дело только с базой данных, означает, что во всех примерах они используют аннотации cahePut на уровне DAO . Поэтому мой вопрос заключается в том, можно ли использовать аннотации CahePut в обычном классе компонентов, где я слушаю, а затем обрабатываю xml-сообщение из темы Кафки .

3. В идеале вы бы не помещали конкретные аннотации DAO в компонент данных. Почему вы не можете создать какой-нибудь класс повторного обслуживания, который вы подключаете к классу KafkaListener и вызываете?

4. @OneCricketeer да, я планирую написать уровень сервиса (как вы предлагали с именем rediservice), который будет автоматически подключен к классу прослушивателя Кафки. Мой вопрос здесь в том ,что, поскольку у меня нет вызова уровня БД, должен ли я напрямую использовать аннотацию cacheput внутри уровня сервиса ?

5. @OneCricketer ,в приведенном выше комментарии я упомянул ,что у меня нет никакого уровня БД, здесь уровень БД означает фактический JPA/спящий режим, где мы можем выполнять операции crud. здесь я буду слушать непосредственно из темы Кафки и хочу поместить это в кэш redis.