共用方式為


快速入門:搭配 Jedis Redis 用戶端在 Java 中使用 Azure Cache for Redis

在本快速入門中,您會使用 Jedis Redis 用戶端,將 Azure Cache for Redis 納入 Java 應用程式。 您的快取可從 Azure 的任何應用程式存取,是安全的專用快取。

跳至 GitHub 上的程式碼

複製 GitHub 上的 Java 快速入門存放庫。

必要條件

建立 Azure 受控 Redis (預覽) 實例

  1. 若要建立 Azure 受控 Redis (預覽) 實例,請登入 Azure 入口網站,然後選取 [建立資源]。

  2. 在 [ 新增 ] 頁面上的搜尋方塊中,輸入 Azure Cache for Redis

  3. 在 [新的 Redis 快取] 頁面上,設定新快取的設定。

    設定 選擇值 描述
    訂用帳戶 下拉並選取您的訂用帳戶。 要在其中建立這個新 Azure 受控 Redis 實例的訂用帳戶。
    資源群組 下拉並選取資源群組,或選取 [新建] 並輸入新的資源群組名稱。 用來建立快取和其他資源的資源群組名稱。 將所有的應用程式資源放在一個資源群組中,您將可輕鬆地一併管理或刪除這些資源。
    DNS 名稱 輸入區域中唯一的名稱。 當快取名稱與快取的區域名稱合併 (只包含數字、字母或連字號) 時,必須為介於 1 到 63 個字元之間的字串。 (如果快取名稱長度少於 45 個字元,則應該適用於所有目前可用的區域。名稱必須以數位或字母開頭和結尾,且不能包含連續連字元。 快取執行個體的主機名稱\<DNS name\>.\<Azure region\>.redis.azure.net
    地點 下拉並選取位置。 Azure 受控 Redis 可在選取的 Azure 區域中取得。
    快取類型 下拉式清單並選取效能層級和快取大小。 層會決定 Redis 實例的效能,而快取大小會決定可用來儲存數據的記憶體。 如需選擇正確效能層級的指引,請參閱 選擇正確的層

    顯示 [Azure 受控 Redis 基本] 索引標籤的螢幕快照。

  4. 選取 [下一步:網络] ,然後選取公用或私人端點。

  5. 選取 [下一步:進階]

    設定您要新增至 實例的任何 Redis 模組

    根據預設,針對新的受控快取:

    • Microsoft已啟用 Entra 識別碼。
    • 基於安全性考慮,存取金鑰驗證 已停用。

    重要

    為了獲得最佳安全性,建議您盡可能使用 Microsoft Entra ID 搭配受控識別來授權對快取的要求。 使用 Microsoft Entra ID 和受控識別進行授權,提供比共用存取金鑰授權更優異的安全性和易用性。 如需搭配快取使用受控識別的詳細資訊,請參閱使用 Microsoft Entra ID 進行快取驗證 (部分機器翻譯)。

    將 [叢集原則] 設定[企業],以用於非叢集快取,或設定為叢集快取的 OSS 如需選擇 叢集原則的詳細資訊,請參閱 叢集原則

    顯示 [Azure 受控 Redis 進階] 索引標籤的螢幕快照。

    如果您使用 主動式異地複寫,則必須在建立期間加以設定。 如需詳細資訊,請參閱 設定 Azure 受控 Redis 實例的作用中異地複寫。

    重要

    建立 Azure 受控 Redis 實例之後,您無法變更叢集原則。 如果您使用 RediSearch,則需要企業叢集原則,而且 NoEviction 是唯一支援的收回原則。

    重要

    如果您在異地復寫群組中使用這個快取實例,在建立實例之後就無法變更收回原則。 建立快取之前,請務必了解主要節點的收回原則。 如需主動式異地復寫的詳細資訊,請參閱 作用中異地復寫必要條件

    重要

    建立快取實例之後,您無法變更模組。 您必須在建立 Azure Cache for Redis 執行個體時啟用模組。 建立快取之後,沒有選項可啟用模組的設定。

  6. 選取 [下一步:標記] 並略過。

  7. 完成時,選取 [下一步:檢閱 + 建立]。

  8. 檢閱設定並選取 [建立]

    Redis 實例需要幾分鐘的時間才能建立。 您可以在 Azure 受控 Redis 概觀 頁面上監視進度。 當 [狀態] 顯示為 [執行中] 時,表示快取已可供使用。

建立 Azure Cache for Redis 執行個體

  1. 若要建立快取,請登入 Azure 入口網站。 在入口網站功能表中,選取 [建立資源]

    顯示 Azure 入口網站左側瀏覽窗格中醒目提示顯示「建立資源」選項的螢幕擷取畫面。

  2. 在 [開始使用] 窗格中,於搜尋列中輸入「Azure Cache for Redis」。 在搜尋結果中,尋找「Azure Cache for Redis」,然後選取 [建立]

    顯示 Azure Marketplace 的螢幕擷取畫面,搜尋方塊中有 Azure Cache for Redis,且「建立」按鈕已醒目顯示。

  3. 在 [新增 Azure Cache for Redis] 窗格的 [基本] 索引標籤上,為您的快取設定下列設定:

    設定 動作 描述
    訂用帳戶 選取 Azure 訂閱。 用於建立新 Azure Cache for Redis 執行個體的訂用帳戶。
    資源群組 選取資源群組,或選取 [新建] 並輸入新的資源群組名稱。 用來建立快取和其他資源的資源群組名稱。 將所有的應用程式資源放在一個資源群組中,您將可輕鬆地一併管理或刪除這些資源。
    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. 在 [進階] 窗格中,根據下列資訊驗證或選取驗證方法:

    顯示 [進階] 窗格,以及可供選取可用選項的螢幕擷取畫面。

    • 根據預設,對於新的基本、標準或進階快取,會啟用 Microsoft Entra 驗證並停用存取金鑰驗證
    • 對於基本或標準快取,您可以選擇非 TLS 連接埠的選取項目。
    • 對於標準和進階快取,您可以選擇啟用可用性區域。 您無法在建立快取後停用可用性區域。
    • 針對進階快取,設定適用於非 TLS 連接埠、叢集、受控識別和資料持續性的設定。

    重要

    為了獲得最佳安全性,建議您盡可能使用 Microsoft Entra ID 搭配受控識別來授權對快取的要求。 使用 Microsoft Entra ID 和受控識別進行授權,提供比共用存取金鑰授權更優異的安全性和易用性。 如需搭配快取使用受控識別的詳細資訊,請參閱使用 Microsoft Entra ID 進行快取驗證 (部分機器翻譯)。

  8. (選用) 選取 [標籤] 索引標籤,或選取 [下一步: 標籤]

  9. (選用) 如果您想要分類快取資源,請在 [標籤] 索引標籤上輸入標籤名稱和值。

  10. 選取 [檢閱 + 建立] 按鈕。

    在 [檢閱 + 建立] 索引標籤上,Azure 會自動驗證您的設定。

  11. 出現綠色的 [通過驗證] 訊息之後,請選取 [建立]

新的快取部署會在幾分鐘內進行。 您可以在 Azure Cache for Redis 概觀窗格上監視部署進度。 當 [狀態] 顯示 [執行中] 時,表示快取已可供使用。

從 Azure 入口網站擷取主機名稱、連接埠和存取金鑰

若要連線 Azure Cache for Redis 伺服器,快取用戶端需要快取的主機名稱、連接埠和金鑰。 某些用戶端可能會以稍有不同的名稱來參考這些項目。 您可以從 Azure 入口網站取得主機名稱、連接埠和金鑰。

  • 若要取得快取的主機名和埠,請從 [資源] 功能表中選取 [概觀]。 主機名稱的格式 <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>:D NS主機名。 若要取得快取的主機名和埠,請從 [資源] 功能表中選取 [概觀]。 主機名稱的格式 <DNS name>.redis.cache.windows.net為 。

    顯示 Azure Cache for Redis 屬性的螢幕快照。

  • <user-name>:受控識別或服務主體的物件識別碼。

    您可以使用下列步驟來取得使用者名稱:

    1. 在 Azure 入口網站中,瀏覽至您的 Azure Cache for Redis 執行個體。

    2. 在瀏覽窗格中,選取 [資料存取設定]

    3. 在 [Redis 使用者] 索引標籤上,尋找 [使用者名稱] 資料行。

      Azure 入口網站的螢幕擷取畫面,其中顯示 [Azure Cache for Redis 資料存取設定] 頁面,當中已反白顯示 [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-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 執行個體。 此程式碼也會將字串值儲存到快取中,以及擷取其中的字串值。 PINGCLIENT LIST 命令也會執行。

  6. 關閉App.java檔案。

建置並執行應用程式

執行下列 Maven 命令,以建置和執行應用程式:

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

在下列輸出中,您可以看到 Message 索引鍵先前有快取的值。 此值已使用 jedis.set 更新為新的值。 應用程式也已執行 PINGCLIENT 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 入口網站,然後選取 [資源群組]

  2. 在 [依名稱篩選] 文字方塊中,輸入您的資源群組名稱。 本文的指示是使用名為 TestResources 的資源群組。 在結果清單中的目標資源群組上方,選取 [測試資源],然後按一下 [刪除資源群組]

    Azure 入口網站的螢幕擷取畫面,其中 [資源群組] 頁面已反白顯示 [刪除資源群組] 按鈕。

  3. 輸入您的資源群組名稱以確認刪除,然後選取 [刪除]

片刻過後,系統便會刪除該資源群組及其所有內含的資源。

下一步

在本快速入門中,您已了解如何從 Java 應用程式使用 Azure Cache for Redis。 請繼續閱讀下一個快速入門,以搭配使用 Azure Cache for Redis 與 ASP.NET Web 應用程式。