Использование кэша Redis в Azure в Spring
Azure Cache для Redis предоставляет хранилище данных в оперативной памяти на основе программного обеспечения Redis. Redis значительно повышает производительность и масштабируемость приложения, использующего внутренние хранилища данных.
В этом руководстве показано, как использовать кэш Redis для хранения и извлечения данных в приложении Spring Boot.
В этом руководстве мы рассмотрим два метода проверки подлинности: проверку подлинности Microsoft Entra и проверку подлинности Redis. На вкладке "Без пароля" показана проверка подлинности Microsoft Entra, а на вкладке "Пароль" отображается проверка подлинности Redis.
Проверка подлинности Microsoft Entra — это механизм подключения к кэшу Azure для Redis с помощью удостоверений, определенных в идентификаторе Microsoft Entra. С помощью проверки подлинности Microsoft Entra можно управлять удостоверениями пользователей базы данных и другими службами Майкрософт в центральном расположении, что упрощает управление разрешениями.
Проверка подлинности Redis использует пароли в Redis. Если вы решили использовать пароли в качестве учетных данных, необходимо самостоятельно управлять паролями.
Необходимые условия
Подписка Azure— создать ее бесплатно.
пакет средств разработки Java (JDK) версии 17 или более поздней.
Apache Mavenверсии 3.0 или более поздней.
cURL или аналогичную программу HTTP для тестирования функциональных возможностей.
Экземпляр кэша Redis. Если у вас нет кэша Redis, ознакомьтесь с кратким руководством : Создание кэша Redis с открытым исходным кодом.
Приложение Spring Boot. Если у вас его нет, создайте один проект Maven с помощью Spring Initializr. Обязательно выберите Проект Maven и в разделе Зависимостейдобавьте Spring Web и Spring Data Reactive Redis, а затем выберите версию Java 8 или более позднюю.
Кэширование данных в кэш Azure для Redis
С помощью экземпляра кэша Azure для Redis можно кэшировать данные с помощью Spring Cloud Azure.
Чтобы установить Spring Cloud Azure Starter Data Redis с модулем Lettuce, добавьте следующие зависимости в файл pom.xml:
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-data-redis-lettuce</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.20.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Заметка
Этот счет материалов (BOM) должен быть настроен в разделе <dependencyManagement>
файла pom.xml. Эта конфигурация гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в Какую версию Spring Cloud Azure следует использовать.
Код приложения
Чтобы использовать кэш Redis для хранения и извлечения данных, настройте приложение, выполнив следующие действия.
Настройте учетные данные кэша Redis в файле конфигурации application.properties, как показано в следующем примере.
spring.data.redis.host=<your-redis-name>.redis.cache.windows.net spring.data.redis.port=10000 spring.data.redis.username=<your-redis-username> spring.data.redis.ssl.enabled=true spring.data.redis.azure.passwordless-enabled=true
spring.data.redis.host=<your-redis-name>.redis.cache.windows.net spring.data.redis.port=6380 spring.data.redis.username=<your-redis-username> spring.data.redis.ssl.enabled=true spring.data.redis.azure.passwordless-enabled=true
Заметка
Чтобы получить значение
username
, следуйте указаниям, приведённым в разделе Enable Microsoft Entra ID authentication on your cache в Use Microsoft Entra ID for cache authentication, и скопируйте значение имени пользователя.Измените файл класса запуска, чтобы отобразить следующее содержимое. Этот код хранит и извлекает данные.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; @SpringBootApplication public class DemoCacheApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(DemoCacheApplication.class); @Autowired private StringRedisTemplate template; public static void main(String[] args) { SpringApplication.run(DemoCacheApplication.class, args); } @Override public void run(String... args) { ValueOperations<String, String> ops = this.template.opsForValue(); String key = "testkey"; if(!this.template.hasKey(key)){ ops.set(key, "Hello World"); LOGGER.info("Add a key is done"); } LOGGER.info("Return the value from the cache: {}", ops.get(key)); } }
Затем запустите приложение. Приложение извлекает данные из кэша Redis. Вы должны увидеть логи, похожие на следующий пример:
Add a key is done
Return the value from the cache: Hello World
Развертывание в Azure Spring Apps
Теперь, когда у вас есть приложение Spring Boot, работающее локально, пришло время переместить его в рабочую среду. Azure Spring Apps упрощает развертывание приложений Spring Boot в Azure без каких-либо изменений кода. Служба управляет инфраструктурой приложений Spring, чтобы разработчики могли сосредоточиться на коде. Azure Spring Apps предоставляет управление жизненным циклом с помощью комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, сине-зеленого развертывания и других функций. Сведения о развертывании приложения в Azure Spring Apps см. в статье Развертывание первого приложения в Azure Spring Apps.
Дальнейшие действия
Чтобы узнать больше о Spring и Azure, перейдите в центр документации Spring в Azure.