在 Spring 中使用 Azure Redis 缓存

Azure Redis 缓存 提供基于 Redis 软件的内存中数据存储。 Redis 可提高使用后端数据存储的应用程序的性能和可伸缩性。

本教程演示如何使用 Redis 缓存在 Spring Boot 应用程序中存储和检索数据。

在本教程中,我们包括两种身份验证方法:Microsoft Entra 身份验证和 Redis 身份验证。 “无密码”选项卡显示“Microsoft Entra 身份验证”,“密码”选项卡显示 Redis 身份验证。

Microsoft Entra 身份验证是一种使用 Microsoft Entra ID 中定义的标识连接到 Azure Redis 缓存的机制。 使用 Microsoft Entra 身份验证,可以在中心位置管理数据库用户标识和其他Microsoft服务,从而简化权限管理。

Redis 身份验证使用 Redis 中的密码。 如果选择使用密码作为凭据,则需要自行管理密码。

先决条件

将数据缓存到 Azure Cache for Redis 服务

使用 Azure Cache for Redis 实例,您可以利用 Spring Cloud Azure 来缓存数据。

若要安装 Spring Cloud Azure Starter Data Redis with Lettuce 模块,请将以下依赖项添加到 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>

注意

应在 pom.xml 文件的 <dependencyManagement> 部分中配置此材料清单(BOM)。 此配置可确保所有 Spring Cloud Azure 依赖项都使用相同的版本。 关于此 BOM 版本的更多信息,请参阅 我应该使用哪个版本的 Spring Cloud Azure

对应用程序进行编码

若要使用 Redis 缓存来存储和检索数据,请使用以下步骤配置应用程序:

  1. 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 身份验证部分中的说明进行操作,并复制用户名的值。

  2. 编辑启动类文件以显示以下内容。 此代码存储并检索数据。

    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 文档中心。