在 Spring 中使用 Azure Redis 快取
Azure Cache for Redis 提供一個基於 Redis 軟體的記憶體資料儲存空間。 Redis 可改善大量使用後端資料存放區之應用程式的效能和延展性。
本教學課程示範如何使用 Redis 快取,在 Spring Boot 應用程式中儲存和擷取數據。
在本教學課程中,我們包含兩種驗證方法:Microsoft Entra 驗證和 Redis 驗證。 [無密碼] 索引標籤會顯示 Microsoft Entra 驗證,而 [密碼] 索引標籤會顯示 Redis 驗證。
Microsoft Entra 驗證是一種機制,可使用在 Microsoft Entra ID 中定義的身份用於連接 Azure Cache for Redis。 透過Microsoft Entra 驗證,您可以在集中位置管理資料庫使用者身分識別和其他Microsoft服務,以簡化許可權管理。
Redis 驗證會在 Redis 中使用密碼。 如果您選擇使用密碼作為認證,則必須自行管理密碼。
先決條件
Azure 訂用帳戶 - 免費建立一個訂用帳戶。
Java 開發工具套件 (JDK) 17 版或更高版本。
Apache Maven3.0 版或更高版本。
cURL 或類似的 HTTP 公用程式來測試功能。
Redis 快取實例。 如果您沒有,請參閱 快速入門:建立開放原始碼 Redis 快取。
Spring Boot 應用程式。 如果您還沒有,請使用 Spring Initializr建立 Maven 專案。 請務必選取 Maven 專案,然後在 [相依性] 底下,新增 Spring Web,並 Spring Data Reactive Redis 相依性,然後選取 [Java 第 8 版或更新版本]。
將數據快取至 Azure Cache for Redis
使用 Azure Cache for Redis 實例,您可以使用 Spring Cloud Azure 快取數據。
若要使用 Lettuce 模組安裝 Spring Cloud Azure Starter Data Redis,請將下列相依性新增至您的 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.19.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
備註
此材料帳單 (BOM) 應該在 pom.xml 檔案的 <dependencyManagement>
區段中設定。 此設定可確保所有 Spring Cloud Azure 相依性都使用相同的版本。 如需此 BOM 所使用版本的詳細資訊,請參閱哪個版本的 Spring Cloud Azure 應該使用。
撰寫應用程式程序代碼
若要使用 Redis 快取來儲存和擷取數據,請使用下列步驟來設定應用程式:
在 application.properties 組態檔中設定 Redis 快取認證,如下列範例所示。
spring.data.redis.host=<your-redis-name>.redis.cache.windows.net spring.data.redis.port=10000 spring.data.redis.username=<your-redis-username> spring.data.redis.ssl.enabled=true spring.data.redis.azure.passwordless-enabled=true
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 ID 進行快取驗證的 啟用 Microsoft Entra ID 認證 部分中的指示,並複製 使用者名稱 的值。編輯啟動類別檔案以顯示下列內容。 此程式代碼會儲存和擷取數據。
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,請繼續前往 Azure 上的 Spring 檔中心。