Поделиться через


Краткое руководство. Использование Кэш Azure для Redis в Java с клиентом Redisson Redisis

В этом кратком руководстве описано, как включить Кэш Azure для Redis в приложение Java с помощью клиента Redisson Redis и JCP standard JCache API. Эти службы предоставляют доступ к защищенному выделенному кэшу, доступному из любого приложения в Azure. В этой статье приведены два варианта выбора удостоверения Azure, используемого для подключения Redis.

Переход к коду на GitHub

В этом кратком руководстве используется функция архетипа Maven для создания шаблонов для приложения. В кратком руководстве показано, как изменить созданный код, чтобы прибыть к рабочему образцу приложения. Если вы хотите перейти прямо к завершенный код, ознакомьтесь с кратким руководством по Java на GitHub.

Предпосылки

Создайте управляемый экземпляр Redis в Azure

  1. Чтобы создать экземпляр Azure Managed Redis, войдите на портал Azure и выберите "Создать ресурс".

  2. На новой странице в поле поиска введите Кэш Azure для Redis.

  3. На вкладке "Новый кэш Redis" настройте параметры для нового кэша в основах.

    Настройки Выберите значение Описание
    Подписка Раскройте список и выберите нужную подписку. Подписка, в которой создается новый экземпляр Управляемого Redis Azure.
    Группа ресурсов Раскройте список и выберите группу ресурсов или нажмите Создать и введите имя для новой группы ресурсов. Имя группы ресурсов, в которой будут созданы кэш и другие ресурсы. Поместив все ресурсы приложения в одну группу ресурсов, вы сможете легко управлять ими и/или удалить их вместе.
    Имя Введите уникальное в пределах региона имя. Имя кэша должно быть строкой от 1 до 63 символов при сочетании с именем региона кэша, содержащим только цифры, буквы или дефисы. (Если имя кэша меньше 45 символов, оно должно работать во всех доступных регионах.) Имя должно начинаться и заканчиваться числом или буквой и не может содержать последовательные дефисы. Имя.
    Регион Раскройте список и выберите место. Управляемый Redis azure доступен в выбранных регионах Azure.
    Уровень данных Выберите в памяти для высокой производительности или Flash для более низких производительности кэшей Уровни в памяти включают Balanced, Memory Optimized и Compute Optimized. Используйте уровень Flash для работы с данными в памяти (ОЗУ) и на твердотельном накопителе (SSD).
    Размер кэша Выпадающее меню и выбор размера. Размер кэша зависит от уровня. Наименьший размер — это сбалансированный уровень. Самый большой уровень в памяти — это оптимизированный для памяти уровень.
    Производительность Разверните список и выберите предпочтение производительности. Производительность зависит от количества виртуальных ЦП. Количество виртуальных ЦП зависит от уровня. Оптимизированный для вычислений имеет наибольшее количество виртуальных ЦП.

    Рекомендации по выбору нужного уровня производительности см. в разделе "Выбор нужного уровня".

    Это важно

    Все уровни памяти с объемом хранилища более 120 ГБ находятся в общедоступной предварительной версии, включая оптимизированные по памяти M150 и выше; сбалансированные B150 и выше; и оптимизированные по вычислениям X150 и выше. Все эти уровни и выше находятся в общедоступной предварительной версии.

    Все уровни, оптимизированные для флэш-памяти, находятся в общедоступном предварительном доступе.

  4. Нажмите кнопку "Далее": сеть и выберите общедоступную конечную точку или частную конечную точку.

  5. Нажмите кнопку "Далее": активная георепликация. Чтобы использовать активную георепликацию, ее необходимо включить во время подготовки. Кэши без активной георепликации нельзя впоследствии добавлять в группы активной георепликации или присоединяться к ним. Дополнительные сведения см. в разделе "Настройка активной георепликации для экземпляров Управляемого Redis Azure".

  6. Нажмите кнопку "Далее": вкладка "Дополнительно ".

    Настройте все модули Redis , которые нужно добавить в экземпляр.

    По умолчанию для нового управляемого кэша:

    • Идентификатор Microsoft Entra включен.
    • Проверка подлинности ключей доступа отключена по соображениям безопасности.

    Это важно

    Для оптимальной безопасности рекомендуется использовать идентификатор Microsoft Entra с управляемыми удостоверениями для авторизации запросов к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемых удостоверений обеспечивает более высокую безопасность и удобство использования при авторизации ключа общего доступа. Для получения дополнительной информации об использовании управляемых удостоверений с кэшем см. в разделе Используйте идентификатор Microsoft Entra для проверки подлинности кэша.

    Задайте политику кластеризации:

    • Использование Enterprise для использования RedisSearch или других модулей
    • Используйте OSS для кластеризованного кэша.
    • Используйте Некластеризованный (Превью) для некластеризованного кэша.

    Дополнительные сведения о выборе политики кластеризации см. в статье "Политика кластера".

    Это важно

    После создания не удается изменить политику кластеризации управляемого экземпляра Redis Azure. Если вы используете RediSearch, требуется политика кластера Enterprise и NoEviction является единственной поддерживаемой политикой вытеснения.

    Это важно

    Если вы используете этот экземпляр кэша в группе георепликации, политики вытеснения нельзя изменить после создания экземпляра. Перед созданием кэша необходимо знать политики вытеснения основных узлов. Дополнительные сведения о активной георепликации см. в разделе "Предварительные требования для активной георепликации".

    Это важно

    После создания экземпляра кэша нельзя изменять модули. Модули должны быть включены во время создания экземпляра Кэш Azure для Redis. После создания кэша невозможно включить настройку модуля.

  7. Нажмите кнопку "Далее": теги и пропуск.

  8. Нажмите кнопку "Далее": проверка и создание.

  9. Проверьте параметры и выберите Создать.

    Создание экземпляра Redis занимает несколько минут. Ход выполнения можно отслеживать на странице обзора Управляемого Redis в Azure. Когда Состояние примет значение Running (Выполняется), кэш будет готов к использованию.

Создание экземпляра кэша Azure для Redis

  1. На портале Azure найдите и выберите кэш Azure для Redis.

  2. На странице кэша Azure для Redis выберите "Создать>кэш Azure для Redis".

  3. На вкладке "Основы" страницы"Новый кэш Redis " настройте следующие параметры:

    • Подписка. Выберите нужную подписку.
    • Группа ресурсов: выберите группу ресурсов или нажмите кнопку "Создать" и введите новое имя группы ресурсов. Размещение всех ресурсов приложения в одной группе ресурсов позволяет легко управлять и удалять их вместе.
    • Имя: введите уникальное имя кэша в регионе. Имя должно быть:
      • Должна быть строка длиной от 1 до 63 символов.
      • Содержит только цифры, буквы и дефисы.
      • Начните и закончите числом или буквой.
      • Не содержит последовательные дефисы.
    • Регион. Выберите регион Azure рядом с другими службами, используюющими кэш.
    • Номер SKU кэша: выберите номер SKU , чтобы определить доступные размеры, производительность и функции кэша.
    • Размер кэша: выберите размер кэша. Дополнительные сведения см. в статье Общие сведения о Кэше Azure для Redis.

    Снимок экрана: вкладка

  4. Выберите вкладку "Сеть" или нажмите кнопку "Далее: Сеть".

  5. На вкладке "Сеть" выберите метод подключения, используемый для кэша. Для обеспечения безопасности рекомендуется использовать частную конечную точку. Если выбрать частную конечную точку, выберите "Добавить частную конечную точку" и создайте частную конечную точку.

  6. Выберите вкладку "Дополнительно" или нажмите кнопку "Далее".

  7. На панели "Дополнительно" настройте следующие параметры:

    • Выберите Microsoft Entra Authentication или Access Keys Authentication. Проверка подлинности Microsoft Entra включена по умолчанию.
    • Выберите, следует ли включить порт, отличный от TLS.
    • Для кэша уровня "Премиум" можно настроить или отключить зоны доступности. После создания кэша невозможно отключить зоны доступности. Для кэша уровня "Стандартный" зоны доступности выделяются автоматически. Зоны доступности недоступны для базовой SKU.
    • Для кэша Premium настройте параметры для числа реплик, кластеризации и числа шардов, управляемого удостоверения, назначаемого системой, и сохранения данных.

    На следующем рисунке показана вкладка "Дополнительно " для номера SKU "Стандартный".

    Снимок экрана, отображающий вкладку

    Это важно

    Используйте Microsoft Entra ID с управляемыми удостоверениями, чтобы авторизовать запросы к кэшу, если это возможно. Авторизация с помощью идентификатора Microsoft Entra и управляемого удостоверения обеспечивает более высокую безопасность и проще использовать, чем авторизация общего ключа доступа. Для получения дополнительной информации об использовании управляемых удостоверений с кэшем см. в разделе Используйте идентификатор Microsoft Entra для проверки подлинности кэша.

  8. При необходимости выберите вкладку "Теги " или нажмите кнопку "Далее" и введите имена тегов и значения, чтобы классифицировать ресурсы кэша.

  9. Выберите "Просмотр и создание" и после прохождения проверки нажмите кнопку "Создать".

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

Получение имени узла, портов и ключей доступа с помощью портала Azure

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

  • Чтобы получить имя узла и порты для кэша, выберите "Обзор " в меню "Ресурс ". Имя узла имеет форму <DNS name>.redis.cache.windows.net.

    Снимок экрана: свойства Кэш Azure для Redis.

  • Чтобы получить ключи доступа, выберите "Проверка подлинности " в меню "Ресурс ". Затем откройте вкладку "Ключи доступа".

    Снимок экрана: ключи доступа Кэш Azure для Redis.

Настройка рабочей среды

Ниже показано, как настроить рабочую среду для приложения Java. Вы можете пройти проверку подлинности с помощью Кэш Azure для Redis с помощью идентификатора Microsoft Entra (рекомендуется) или ключей доступа.

export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export USER_NAME=<user-name>
export REDIS_CACHE_PORT=10000
export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export USER_NAME=<user-name>
export REDIS_CACHE_PORT=6380

Замените заполнители следующими значениями:

  • <your-host-name>: DNS-имя узла. Чтобы получить имя узла и порты для кэша, выберите "Обзор " в меню "Ресурс ". Имя узла имеет форму <DNS name>.redis.cache.windows.net.

    Снимок экрана: свойства Кэш Azure для Redis.

  • <user-name>: идентификатор объекта управляемого удостоверения или субъекта-службы.

    Вы можете получить имя пользователя, выполнив следующие действия.

    1. В портал Azure перейдите к экземпляру Кэш Azure для Redis.

    2. На панели навигации выберите "Конфигурация доступа к данным".

    3. На вкладке "Пользователи Redis" найдите столбец "Имя пользователя ".

      Снимок экрана: портал Azure, на котором показана страница конфигурации доступа к данным Кэш Azure для Redis с выделенной вкладкой

Создание нового приложения Java

  1. Используйте Maven для создания нового приложения краткого руководства:

    mvn archetype:generate \
        -DarchetypeGroupId=org.apache.maven.archetypes \
        -DarchetypeArtifactId=maven-archetype-quickstart \
        -DarchetypeVersion=1.3 \
        -DinteractiveMode=false \
        -DgroupId=example.demo \
        -DartifactId=redis-redisson-test \
        -Dversion=1.0
    
  2. Перейдите в новый каталог проекта redis-redisson-test .

  3. Откройте файл pom.xml и добавьте зависимость для Redisson:

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.15.0</version> <!-- {x-version-update;com.azure:azure-identity;dependency} -->
    </dependency>
    
    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.36.0</version> <!-- {x-version-update;org.redisson:redisson;external_dependency} -->
    </dependency>
    
  4. Сохраните файл pom.xml .

  5. Откройте файл App.java и замените существующий код представленным ниже:

    package example.demo;
    
    import com.azure.core.credential.TokenRequestContext;
    import com.azure.identity.DefaultAzureCredential;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import org.redisson.Redisson;
    import org.redisson.api.RedissonClient;
    import org.redisson.config.Config;
    import org.redisson.jcache.configuration.RedissonConfiguration;
    
    import javax.cache.Cache;
    import javax.cache.CacheManager;
    import javax.cache.Caching;
    import javax.cache.configuration.Configuration;
    import javax.cache.configuration.MutableConfiguration;
    import java.time.LocalDateTime;
    
    /**
     * Redis test
     *
     */
    public class App {
        public static void main(String[] args) {
    
            Config redissonconfig = getConfig();
    
            RedissonClient redissonClient = Redisson.create(redissonconfig);
    
            MutableConfiguration<String, String> jcacheConfig = new MutableConfiguration<>();
            Configuration<String, String> config = RedissonConfiguration.fromInstance(redissonClient, jcacheConfig);
    
            // Perform cache operations using JCache
            CacheManager manager = Caching.getCachingProvider().getCacheManager();
            Cache<String, String> map = manager.createCache("test", config);
    
            // Simple get and put of string data into the cache
            System.out.println("\nCache Command  : GET Message");
            System.out.println("Cache Response : " + map.get("Message"));
    
            System.out.println("\nCache Command  : SET Message");
            map.put("Message",
                    String.format("Hello! The cache is working from Java! %s", LocalDateTime.now()));
    
            // Demonstrate "SET Message" executed as expected
            System.out.println("\nCache Command  : GET Message");
            System.out.println("Cache Response : " + map.get("Message"));
    
            redissonClient.shutdown();
    
        }
    
        private static Config getConfig() {
            //Construct a Token Credential from Identity library, e.g. DefaultAzureCredential / ClientSecretCredential / Client    CertificateCredential / ManagedIdentityCredential etc.
            DefaultAzureCredential defaultAzureCredential = new DefaultAzureCredentialBuilder().build();
    
            // Fetch a Microsoft Entra token to be used for authentication.
            String token = defaultAzureCredential
                    .getToken(new TokenRequestContext()
                            .addScopes("https://redis.azure.com/.default")).block().getToken();
    
            // Connect to the Azure Cache for Redis over the TLS/SSL port using the key
            Config redissonconfig = new Config();
            redissonconfig.useSingleServer()
                    .setAddress(String.format("rediss://%s:%s", System.getenv("REDIS_CACHE_HOSTNAME"),  System.getenv("REDIS_CACHE_PORT")))
                    .setUsername(System.getenv("USER_NAME")) // (Required) Username is Object ID of your managed identity or service principal
                    .setPassword(token); // Microsoft Entra access token as password is required.
            return redissonconfig;
        }
    }
    
    
  6. Сохраните App.java.

Создание и запуск приложения

Выполните следующую команду Maven для построения и запуска приложения:

mvn compile exec:java -Dexec.mainClass=example.demo.App

В следующих выходных данных можно увидеть, что Message ключ ранее имел кэшированное значение, которое было задано в последнем запуске. Приложение обновило кэшированное значение.

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java! 2023-12-05T15:13:11.398873

Cache Command  : SET Message

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java! 2023-12-05T15:45:45.748667

Очистите ресурсы

Если вы планируете продолжить работу со следующим руководством, вы можете сохранить ресурсы, созданные в этом кратком руководстве, и повторно использовать их.

В противном случае, если вы закончили работу с примером приложения из краткого руководства, вы можете удалить ресурсы Azure, созданные в текущем руководстве, чтобы избежать ненужных расходов.

Это важно

Удаление группы ресурсов — необратимая операция, и все соответствующие ресурсы удаляются окончательно. Будьте внимательны, чтобы случайно не удалить не ту группу ресурсов или не те ресурсы. Если вы создали ресурсы для размещения этого примера в существующей группе ресурсов, содержащей ресурсы, которые необходимо сохранить, можно удалить каждый ресурс по отдельности, а не удалить группу ресурсов.

  1. Войдите в портал Azure и выберитеГруппы ресурсов.

  2. Введите имя группы ресурсов в текстовое поле Фильтровать по имени. Инструкции для этой статьи использовали группу ресурсов с именем TestResources. В группе ресурсов в списке результатов выберите "Тестовые ресурсы " и "Удалить группу ресурсов".

    Снимок экрана: портал Azure, на котором показана страница группы ресурсов с выделенной кнопкой

  3. Введите имя группы ресурсов, чтобы подтвердить удаление, а затем нажмите кнопку "Удалить".

Через некоторое время группа ресурсов и все ее ресурсы будут удалены.

Дальнейшие шаги

Из этого краткого руководства вы узнали, как использовать Кэш Azure для Redis из приложения Java с клиентом Redisson Redis и JCache. Переходите к следующему краткому руководству по использованию кэша Azure для Redis в веб-приложениях ASP.NET.