次の方法で共有


クイックスタート: Redisson Redis クライアントと共に Java で Azure Cache for Redis を使用する

このクイックスタートでは、Redisson Redis クライアントと JCP 標準 JCache API を使用して、Java アプリに Azure Cache for Redis を組み込みます。 これらのサービスを使用すると、Azure 内の任意のアプリケーションからアクセスできるセキュリティで保護された専用キャッシュにアクセスできます。 この記事では、Redis 接続に使用する Azure ID を選択するための 2 つのオプションについて説明します。

GitHub のコードにスキップする

このクイックスタートでは、Maven アーキタイプ機能を使用して、アプリのスキャフォールディングを生成します。 クイックスタートでは、生成されたコードを変更して、動作中のサンプル アプリにアクセスする方法を示します。 スキップしてすぐに完成したコードをご覧になりたい方は、GitHub にある Java のクイックスタートを参照してください。

前提条件

Azure Cache for Redis を作成する

  1. キャッシュを作成するには、Azure portal にサインインします。 ポータルのメニューで、[リソースの作成] を選びます。

    Azure portal の左側のナビゲーション ウィンドウの [リソースの作成] オプションが強調して示されているスクリーンショット。

  2. [作業の開始] ペインの検索バーに「Azure Cache for Redis」と入力します。 検索結果で Azure Cache for Redis を見つけて、[作成] を選びます。

    検索ボックスに Azure Cache for Redis が入力され、[作成] ボタンが強調されている Azure Marketplace を示すスクリーンショット。

  3. [新しい Redis Cache] ペインの [基本] タブで、以下のキャッシュの設定を構成します。

    設定 アクション 説明
    サブスクリプション Azure サブスクリプションを選択します。 Azure Cache for Redis の新しいインスタンスの作成に使うサブスクリプション。
    リソース グループ リソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 キャッシュや他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    DNS 名 一意の名前を入力します。 キャッシュ名は、数字、英字、ハイフンのみを含む 1 から 63 文字の文字列とする必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は \<DNS name>.redis.cache.windows.net です。
    場所 場所を選択します。 キャッシュを使う他のサービスに近い Azure リージョン
    キャッシュ SKU SKU を選びます。 SKU によって、キャッシュに利用できるサイズ、パフォーマンス、機能のパラメーターが決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
    キャッシュ サイズ キャッシュ サイズを選びます。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
  4. [ネットワーク] タブを選ぶか、[次へ: ネットワーク] を選びます。

  5. [ネットワーク] タブで、キャッシュに使う接続方法を選びます。

  6. [詳細] タブを選ぶか、[次へ: 詳細] を選びます。

  7. [詳細] ペインで、以下の情報に基づいて認証方法を確認または選択します。

    [詳細] ペインと選択できるオプションを示すスクリーンショット。

    • 既定では、新しい Basic、Standard、または Premium キャッシュでは、Microsoft Entra 認証が有効になり、アクセス キー認証が無効になります。
    • Basic または Standard キャッシュの場合は、非 TLS ポートを選択できます。
    • Standard および Premium キャッシュの場合は、可用性ゾーンを有効にすることを選択できます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。

    重要

    最適なセキュリティのため、可能であれば、キャッシュに対する要求を認可するのに Microsoft Entra ID とマネージド ID を使うことをお勧めします。 Microsoft Entra ID とマネージド ID を使う認可は、共有アクセス キーの認可より、セキュリティと使いやすさの点で優れています。 キャッシュでのマネージド ID の使用について詳しくは、キャッシュ認証への Microsoft Entra ID の使用に関する記事をご覧ください。

  8. (省略可能) [タグ] タブを選ぶか、[次へ: タグ] を選びます。

  9. (省略可能) キャッシュ リソースを分類する場合は、[タグ] タブでタグの名前と値を入力します。

  10. [確認および作成] ボタンを選択します。

    [確認と作成] タブでは、Azure によって構成が自動的に検証されます。

  11. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

新しいキャッシュのデプロイは数分で完了します。 デプロイの進行状況は、Azure Cache for Redis の [概要] ペインで監視できます。 [状態][実行中] と表示されたら、キャッシュを使用できます。

Azure portal からホスト名、ポート、アクセス キーを取得する

Azure Cache for Redis サーバーに接続するには、キャッシュ クライアントにキャッシュのホスト名、ポート、およびキーが必要です。 クライアントによっては、これらの項目を参照するための名前が若干異なる場合があります。 ホスト名、ポート、およびキーは Azure portal から取得できます。

  • アクセス キーを取得するには、[リソース] メニューから [認証] を選択します。 その後、[アクセス キー] タブを選択します。

    Azure Cache for Redis のアクセス キーを示すスクリーンショット。

  • キャッシュのホスト名とポートを取得するには、[リソース] メニューから [概要] を選択します。 ホスト名は、<DNS 名>.redis.cache.windows.net の形式になります。

    Azure Cache for Redis のプロパティを示すスクリーンショット。

作業環境の設定

このセクションの手順では、Redis 接続に使用される Azure ID を選択する方法の 2 つのオプションを示します。 サンプル コードでは、AUTH_TYPE 環境変数の値を確認し、値に応じてアクションを実行します。

ID オプション 1: Redis キーを使用した認証

オペレーティング システムに応じて、キャッシュのホスト名とプライマリ アクセス キーの環境変数を追加します。 コマンド プロンプトまたはターミナル ウィンドウを開き、次の値を設定します。

export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export REDIS_CACHE_KEY=<your-primary-access-key>
export AUTH_TYPE=RedisKey

プレースホルダーを次の値に置き換えます。

  • <your-host-name>:Azure portal の Azure Cache for Redis リソースの [プロパティ] セクションから取得した DNS ホスト名。
  • <your-primary-access-key>:Azure portal の Azure Cache for Redis リソースの [アクセス キー] セクションから取得したプライマリ アクセス キー。

ID オプション 2: Microsoft Entra ID を使用した認証

オペレーティング システムに応じて、キャッシュのホスト名とユーザー名の環境変数を追加します。 コマンド プロンプトまたはターミナル ウィンドウを開き、次の値を設定します。

export REDIS_CACHE_HOSTNAME=<your-host-name>.redis.cache.windows.net
export USER_NAME=<user-name>
export AUTH_TYPE=MicrosoftEntraID

プレースホルダーを次の値に置き換えます。

  • <your-host-name>:Azure portal の Azure Cache for Redis リソースの [プロパティ] セクションから取得した DNS ホスト名。
  • <user-name>: マネージド ID またはサービス プリンシパルのオブジェクト ID。
    • ユーザー名は、次の手順を使用して取得できます。

      1. Azure portal で、Azure Cache for Redis インスタンスに移動します。

      2. ナビゲーション ウィンドウで、[データ アクセス構成] を選択します。

      3. [Redis ユーザー] タブで、[ユーザー名] 列を見つけます。

        [Redis ユーザー] タブと [ユーザー名] の値が強調表示された [Azure Cache for Redis データ アクセス構成] ページを示す Azure portal のスクリーンショット。

新しい Java アプリを作成する

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

新しい redis-redisson-test プロジェクト ディレクトリに移動します。

pom.xml ファイルを開き、Redisson の依存関係を追加します。

    <dependency>
        <groupId>com.azure</groupId>
        <artifactId>azure-identity</artifactId>
        <version>1.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>3.24.3</version>
    </dependency>

pom.xml ファイルを保存します。

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(){
        if ("MicrosoftEntraID".equals(System.getenv("AUTH_TYPE"))) {
            System.out.println("Auth with Microsoft Entra ID");
            return getConfigAuthWithAAD();
        } else if ("RedisKey".equals(System.getenv("AUTH_TYPE"))) {
            System.out.println("Auth with Redis key");
            return getConfigAuthWithKey();
        }
        System.out.println("Auth with Redis key");
        return getConfigAuthWithKey();
    }

    private static Config getConfigAuthWithKey() {
        // Connect to the Azure Cache for Redis over the TLS/SSL port using the key
        Config redissonconfig = new Config();
        redissonconfig.useSingleServer().setPassword(System.getenv("REDIS_CACHE_KEY"))
            .setAddress(String.format("rediss://%s:6380", System.getenv("REDIS_CACHE_HOSTNAME")));
        return redissonconfig;
    }

    private static Config getConfigAuthWithAAD() {
        //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("acca5fbb-b7e4-4009-81f1-37e38fd66d78/.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:6380", System.getenv("REDIS_CACHE_HOSTNAME")))
            .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;
    }

}

このコードは、Redisson クライアント ライブラリの JCache API サポートとともに Microsoft Entra ID を使用して Azure Cache for Redis インスタンスに接続する方法を示します。 コードでは、キャッシュ内の文字列値の格納および取得も行います。 JCache の詳細については、JCache 仕様を参照してください。

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 portal にサインインし、 [リソース グループ] を選択します。

  2. [名前でフィルター] ボックスにリソース グループの名前を入力します。 この記事の手順では、TestResources という名前のリソース グループを使用しました。 結果一覧でリソース グループの [テスト リソース][リソース グループの削除] の順に選択します。

    [リソース グループの削除] ボタンが強調表示されている [リソース グループ] ページを示す Azure portal のスクリーンショット。

  3. 削除を確認するためにリソース グループの名前を入力し、[削除] を選択します。

しばらくすると、リソース グループとそこに含まれているすべてのリソースが削除されます。

次のステップ

このクイックスタートでは、Redisson Redis クライアントおよび JCache と共に、Java アプリケーションから Azure Cache for Redis を使用する方法を説明しました。 ASP.NET Web アプリと Azure Cache for Redis を使用するには、次のクイック スタートに進みます。