次の方法で共有


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

このクイックスタートでは、Jedis Redis クライアントを使用して、Java アプリに Azure Cache for Redis を組み込みます。 キャッシュは、Azure 内の任意のアプリケーションからアクセスできるセキュリティで保護された専用キャッシュです。

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

GitHub でリポジトリ Java クイック スタートを複製します。

前提条件

Azure Managed Redis (プレビュー) インスタンスを作成する

  1. Azure Managed Redis (プレビュー) インスタンスを作成するには、Azure portal にサインインし、[リソースの作成] を選択します。

  2. [新規] ページで、検索ボックスに「Azure Cache for Redis」と入力します。

  3. [新規 Redis Cache] ページで、新しいキャッシュの設定を構成します。

    設定 値を選択する 説明
    サブスクリプション ドロップダウンで、ご自身のサブスクリプションを選択します。 この新しい Azure Managed Redis インスタンスが作成されるサブスクリプション。
    リソース グループ ドロップ ダウンでリソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    DNS 名 リージョンで一意の名前を入力します。 キャッシュ名は、"キャッシュのリージョン名と組み合わせた" ときに 1 から 63 文字の文字列で、数字、英字、ハイフンのみを使用する必要があります。 (キャッシュ名の長さが 45 文字未満の場合、現在使用できるすべてのリージョンで機能するはずです)。名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は \<DNS name\>.\<Azure region\>.redis.azure.net です。
    場所 ドロップ ダウンで場所を選択します。 Azure Managed Redis は、選択した Azure リージョンで使用できます。
    キャッシュの種類 ドロップダウン メニューから、パフォーマンス レベルとキャッシュ サイズを選択します。 Redis インスタンスのパフォーマンスはレベルによって決まり、データの格納に使用できるメモリはキャッシュ サイズによって決まります。 適切なパフォーマンス レベルの選択に関するガイダンスについては、「最適なサービス レベルを選択する」を参照してください

    Azure Managed Redis の [基本] タブを示すスクリーンショット。

  4. [次へ: ネットワーク] を選択し、パブリックまたはプライベート エンドポイントのいずれかを選択します。

  5. [次: 詳細] を選択します。

    インスタンスに追加する Redis モジュールを構成します。

    新しいマネージド キャッシュの場合、既定で次のように設定されています:

    • Microsoft Entra ID は有効になっています。
    • [アクセス キー認証] は、セキュリティ上の理由から無効になっています。

    重要

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

    クラスター化されていないキャッシュの [Clustering policy] (クラスタリング ポリシー)[Enterprise] に設定するか、クラスター化されたキャッシュの場合は [OSS] に設定します。 [クラスタリング ポリシー] の選択方法の詳細については、「クラスタリング ポリシー」を参照してください。

    Azure Managed Redis の [詳細] タブを示すスクリーンショット。

    アクティブ geo レプリケーションを使用する場合は、作成時にそれを構成する必要があります。 詳細については、「Azure Managed Redis インスタンスのアクティブ geo レプリケーションを構成する」を参照してください。

    重要

    Azure Managed Redis (プレビュー) インスタンスのクラスタリング ポリシーは、作成後に変更することはできません。 RediSearch を使用している場合、Enterprise クラスター ポリシーは必須であり、サポートされている唯一の削除ポリシーは NoEviction です。

    重要

    geo レプリケーション グループでこのキャッシュ インスタンスを使用している場合、インスタンスの作成後に削除ポリシーを変更することはできません。 キャッシュを作成する前に、プライマリ ノードの削除ポリシーを確認してください。 アクティブ geo レプリケーションの詳細については、「アクティブ geo レプリケーションの前提条件」を参照してください。

    重要

    キャッシュ インスタンスを作成した後でモジュールを変更することはできません。 モジュールは、Azure Cache for Redis インスタンスを作成するときに有効になっている必要があります。 キャッシュの作成後にモジュールの構成を有効にするオプションはありません。

  6. タグ を選択してスキップします。

  7. 確認と作成 をクリックします。

  8. 設定を確認し、 [作成] を選択します。

    Redis インスタンスの作成には数分かかります。 Azure Managed Redis の [概要] ページで進行状況を監視できます。 [状態] に "実行中" と表示されている場合は、キャッシュを使用する準備ができています。

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 から取得できます。

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

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

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

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

作業環境のセットアップ

次の手順は、Java アプリの作業環境を設定する方法を示しています。 Microsoft Entra ID (推奨) またはアクセス キーを使用して Azure Cache for Redis で認証することを選択できます。

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 Cache for Redis のプロパティを示すスクリーンショット。

  • <user-name>: マネージド ID またはサービス プリンシパルのオブジェクト ID。

    ユーザー名は、次の手順を使用して取得できます。

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

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

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

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

新しい 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-jedis-test \
        -Dversion=1.0
    
  2. 新しい redis-jedis-test プロジェクト ディレクトリに移動します。

  3. pom.xml ファイルを開きます。 このファイルには、Jedis の依存関係が表示されます。

    <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>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>5.2.0</version> <!-- {x-version-update;redis.clients:jedis;external_dependency} -->
    </dependency>
    
  4. pom.xml ファイルを閉じます。

  5. App.java を開き、コードを次のコードと参照してください。

    package example.demo;
    
    import com.azure.identity.DefaultAzureCredential;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.azure.core.credential.TokenRequestContext;
    import redis.clients.jedis.DefaultJedisClientConfig;
    import redis.clients.jedis.Jedis;
    
    /**
     * Redis test
     *
     */
    public class App
    {
        public static void main( String[] args )
        {
    
            boolean useSsl = true;
    
            //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. This token will be used as the password.
                    String token = defaultAzureCredential
                            .getToken(new TokenRequestContext()
                                    .addScopes("https://redis.azure.com/.default")).block().getToken();
    
            String cacheHostname = System.getenv("REDIS_CACHE_HOSTNAME");
            String username = System.getenv("USER_NAME");
            int port = Integer.parseInt(System.getenv().getOrDefault("REDIS_CACHE_PORT", "6380"));
    
            // Connect to the Azure Cache for Redis over the TLS/SSL port using the key.
            Jedis jedis = new Jedis(cacheHostname, port, DefaultJedisClientConfig.builder()
                    .password(token) // Microsoft Entra access token as password is required.
                    .user(username) // Username is Required
                    .ssl(useSsl) // SSL Connection is Required
                    .build());
            // Perform cache operations using the cache connection object...
    
            // Simple PING command
            System.out.println( "\nCache Command  : Ping" );
            System.out.println( "Cache Response : " + jedis.ping());
    
            // Simple get and put of integral data types into the cache
            System.out.println( "\nCache Command  : GET Message" );
            System.out.println( "Cache Response : " + jedis.get("Message"));
    
            System.out.println( "\nCache Command  : SET Message" );
            System.out.println( "Cache Response : " + jedis.set("Message", "Hello! The cache is working from Java!"));
    
            // Demonstrate "SET Message" executed as expected...
            System.out.println( "\nCache Command  : GET Message" );
            System.out.println( "Cache Response : " + jedis.get("Message"));
    
            // Get the client list, useful to see if connection list is growing...
            System.out.println( "\nCache Command  : CLIENT LIST" );
            System.out.println( "Cache Response : " + jedis.clientList());
    
            jedis.close();
        }
    }
    

    このコードでは、キャッシュ ホスト名とキー環境変数を使用して Azure Cache for Redis のインスタンスに接続する方法を示しています。 コードでは、キャッシュ内の文字列値の格納および取得も行います。 PING および CLIENT LIST コマンドも実行されます。

  6. App.java ファイルを閉じます。

アプリをビルドして実行する

次の Maven コマンドを実行して、アプリをビルドおよび実行します。

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

次の出力では、Message キーに以前にキャッシュされた値があることがわかります。 この値は、jedis.setを使用して新しい値に更新されました。 また、アプリは PING および CLIENT LIST コマンドも実行しました。

Cache Command  : Ping
Cache Response : PONG

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java!

Cache Command  : SET Message
Cache Response : OK

Cache Command  : GET Message
Cache Response : Hello! The cache is working from Java!

Cache Command  : CLIENT LIST
Cache Response : id=777430 addr=             :58989 fd=22 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 ow=0 owmem=0 events=r cmd=client numops=6

リソースをクリーンアップする

次のチュートリアルに進む場合は、このクイックスタートで作成されたリソースを保持し、それを再利用できます。

クイックスタートのサンプル アプリケーションの使用を終える場合は、課金を避けるために、このクイックスタートで作成した Azure リソースを削除することができます。

重要

いったん削除したリソース グループを元に戻すことはできません。リソース グループとそこに存在するすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 このサンプルをホストするためのリソースを、保持するリソースが含まれる既存のリソース グループ内に作成した場合、リソース グループを削除する代わりに、各リソースを個別に削除できます。

  1. Azure portal にサインインし、 [リソース グループ] を選択します。

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

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

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

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

次のステップ

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