Использование кэша Redis в Azure в Spring

Кэш Azure для Redis предоставляет хранилище данных в памяти на базе программного обеспечения Redis. Redis повышает производительность и масштабируемость приложения, использующего внутренние хранилища данных.

В этом руководстве показано, как использовать кэш Redis для хранения и извлечения данных в приложении Spring Boot.

В этом руководстве мы рассмотрим два метода проверки подлинности: проверку подлинности Microsoft Entra и проверку подлинности Redis. На вкладке "Без пароля" показана проверка подлинности Microsoft Entra, а на вкладке "Пароль" отображается проверка подлинности Redis.

Проверка подлинности Microsoft Entra — это механизм подключения к Кэш Azure для Redis с помощью удостоверений, определенных в идентификаторе Microsoft Entra. С помощью проверки подлинности Microsoft Entra можно управлять удостоверениями пользователей базы данных и другими службы Майкрософт в центральном расположении, что упрощает управление разрешениями.

Проверка подлинности Redis использует пароли в Redis. Если вы решили использовать пароли в качестве учетных данных, необходимо самостоятельно управлять паролями.

Необходимые компоненты

Кэширование данных в Кэш 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>com.azure.spring</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.16.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Примечание.

Этот счет материалов (BOM) должен быть настроен в <dependencyManagement> разделе pom.xml файла. Эта конфигурация гарантирует, что все зависимости Azure Spring Cloud используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия Spring Cloud Azure должна использоваться".

Добавление кода приложения

Чтобы использовать кэш Redis для хранения и извлечения данных, настройте приложение, выполнив следующие действия.

  1. Настройте учетные данные кэша Redis в файле конфигурации application.properties , как показано в следующем примере.

    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, следуйте инструкциям в разделе "Включить проверку подлинности идентификатора Microsoft Entra" в разделе "Использование идентификатора Microsoft Entra для проверки подлинности кэша" и скопируйте значение имени пользователя.

  2. Измените файл класса запуска, чтобы отобразить следующее содержимое. Этот код хранит и извлекает данные.

    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.