快速入门:在 Java 中使用 Azure Cache for Redis

在本快速入门中,你将使用 Jedis Redis 客户端将 Azure Cache for Redis 合并到 Java 应用中。 你的缓存是可通过 Azure 中的任何应用程序进行访问的安全专用缓存。

跳到 GitHub 上的代码

克隆 GitHub 上的存储库 Java 快速入门

先决条件

创建 Azure Redis 缓存

  1. 若要创建缓存,请登录到 Azure 门户并选择“创建资源” 。

    Create a resource is highlighted in the left navigation pane.

  2. 在“新建”页上选择“数据库”,然后选择“Azure Cache for Redis”。

    On New, Databases is highlighted, and Azure Cache for Redis is highlighted.

  3. 在“新建 Redis 缓存”页上配置新缓存的设置。

    设置 选择值 说明
    订阅 单击下拉箭头并选择你的订阅。 要在其下创建此新的 Azure Cache for Redis 实例的订阅。
    资源组 单击下拉箭头并选择一个资源组,或者选择“新建”并输入新的资源组名称。 要在其中创建缓存和其他资源的资源组的名称。 将所有应用资源放入一个资源组可以轻松地统一管理或删除这些资源。
    DNS 名称 输入唯一名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母或连字符。 该名称必须以数字或字母开头和结尾,且不能包含连续的连字符。 缓存实例的主机名是 <DNS name>.redis.cache.chinacloudapi.cn
    位置 单击下拉箭头并选择一个位置。 选择与要使用该缓存的其他服务靠近的区域
    缓存类型 下拉并选择一个 此层决定可用于缓存的大小、性能和功能。 有关详细信息,请参阅用于 Redis 的 Azure 缓存概述
  4. 选择“网络”选项卡,或选择“网络”按钮(位于页面底部) 。

  5. 在“网络”选项卡中,选择你的连接方法。

  6. 选择“下一步:高级”选项卡,或者选择页面底部的“下一步:高级”按钮 。

  7. 在基本或标准缓存实例的“高级”选项卡中,如果想要启用非 TLS 端口,请选择启用开关。 还可以选择你想使用的 Redis 版本,4 或 6。

    Redis version 4 or 6.

  8. 在高级缓存实例的“高级”选项卡中,配置非 TLS 端口、群集和数据持久性的设置。 还可以选择你想使用的 Redis 版本,4 或 6。

  9. 选择“下一步: 标记”选项卡,或者选择页面底部的“下一步: 标记”按钮 。

  10. 或者,在“标记”选项卡中,如果希望对资源分类,请输入名称或值。

  11. 选择“查看 + 创建” 。 随后你会转到“查看 + 创建”选项卡,Azure 将在此处验证配置。

  12. 显示绿色的“已通过验证”消息后,选择“创建”。

创建缓存需要花费片刻时间。 可以在 Azure Cache for Redis 的“概述”页上监视进度。 如果“状态”显示为“正在运行”,则表示该缓存可供使用。

从 Azure 门户检索主机名、端口和访问密钥

若要连接到某个 Azure Cache for Redis 实例,缓存客户端需要该缓存的主机名、端口和密钥。 在某些客户端中,这些项的名称可能略有不同。 可以从 Azure 门户检索主机名、端口和访问密钥。

  • 若要获取访问密钥,请在缓存的左侧导航中选择“访问密钥”。

    Azure Cache for Redis keys

  • 若要获取主机名和端口,请在缓存的左侧导航栏中选择“属性”。 主机名的格式为 <DNS 名称>.redis.cache.chinacloudapi.cn

    Azure Cache for Redis properties

设置工作环境

根据操作系统,为上述的“主机名”和“主访问密钥”添加环境变量。 打开命令提示符或终端窗口,设置以下值:

set REDISCACHEHOSTNAME=<YOUR_HOST_NAME>.redis.cache.chinacloudapi.cn
set REDISCACHEKEY=<YOUR_PRIMARY_ACCESS_KEY>
export REDISCACHEHOSTNAME=<YOUR_HOST_NAME>.redis.cache.chinacloudapi.cn
export REDISCACHEKEY=<YOUR_PRIMARY_ACCESS_KEY>

将占位符替换为以下值:

  • <YOUR_HOST_NAME>:在 Azure 门户中从 Azure Cache for Redis 资源的“属性”部分获取的 DNS 主机名。
  • <YOUR_PRIMARY_ACCESS_KEY>:在 Azure 门户中从 Azure Cache for Redis 资源的“访问密钥”部分获取的主访问密钥。

了解 Java 示例

在本示例中,你使用 Maven 运行快速入门应用。

  1. 切换到新的 redistest 项目目录。

  2. 打开 pom.xml 文件。 在该文件中,你会看到 Jedis 的依赖项:

    <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
      <version>4.1.0</version>
      <type>jar</type>
      <scope>compile</scope>
    </dependency>
    
  3. 关闭 pom.xml 文件。

  4. 打开 App.java,将代码替换为以下代码:

    package example.demo;
    
    import redis.clients.jedis.DefaultJedisClientConfig;
    import redis.clients.jedis.Jedis;
    
    /**
     * Redis test
     *
     */
    public class App 
    {
        public static void main( String[] args )
        {
    
            boolean useSsl = true;
            String cacheHostname = System.getenv("REDISCACHEHOSTNAME");
            String cachekey = System.getenv("REDISCACHEKEY");
    
            // Connect to the Azure Cache for Redis over the TLS/SSL port using the key.
            Jedis jedis = new Jedis(cacheHostname, 6380, DefaultJedisClientConfig.builder()
                .password(cachekey)
                .ssl(useSsl)
                .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 Redis 缓存实例。 此代码还在缓存中存储和检索字符串值。 还执行了 PINGCLIENT LIST 命令。

  5. 关闭 App.java。

生成并运行应用

  1. 首先,如果尚未如上所述设置环境变量,则必须完成该设置。

    set REDISCACHEHOSTNAME=<YOUR_HOST_NAME>.redis.cache.chinacloudapi.cn
    set REDISCACHEKEY=<YOUR_PRIMARY_ACCESS_KEY>
    
  2. 执行以下 Maven 命令来生成并运行应用:

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

在以下示例中,你会看到 Message 密钥之前具有缓存值。 该值已更新为使用 jedis.set 的新值。 应用还执行了 PINGCLIENT LIST 命令。

Azure Cache for Redis app completed

清理资源

如果想要继续使用快速入门代码,可以保留本快速入门中创建的资源,以便重复使用。

如果已完成快速入门示例应用程序,可以删除本快速入门中创建的 Azure 资源,以免产生费用。

重要

删除资源组的操作不可逆,资源组以及其中的所有资源将被永久删除。 请确保不会意外删除错误的资源组或资源。 如果在现有资源组(其中包含要保留的资源)中为托管此示例而创建了相关资源,可在左侧逐个删除这些资源,而不是删除资源组。

  1. 登录到 Azure 门户,然后选择“资源组”。

  2. 在“按名称筛选”文本框中键入资源组的名称。 本文的说明使用了名为 TestResources 的资源组。 在结果列表中的资源组上,选择“...”,然后选择“删除资源组” 。

    Azure resource group deleted

  3. 系统会要求确认是否删除该资源组。 键入资源组的名称进行确认,然后选择“删除”。

片刻之后,将会删除该资源组及其包含的所有资源。

后续步骤

本快速入门介绍了如何通过 Java 应用程序使用 Azure Redis 缓存。 请继续学习下一个快速入门,将 Azure Redis 缓存与 ASP.NET Web 应用配合使用。