You need to enable JavaScript to run this app.
导航
Java SDK
最近更新时间:2024.12.04 10:53:41首次发布时间:2024.11.28 10:29:40

本文介绍如何在 Redis 企业版中使用 Java 语言的 OpenAPI-SDK。

前提条件

需要使用 Java JDK 1.7 或以上版本。更多详情,请参见 Java Downloads

SDK 下载地址

Redis Java SDK 源码地址,请参见 Redis Java SDK

安装 SDK

您需要通过配置 Maven 项目依赖来安装 Redis Java SDK。
新建一个 Maven 项目,并在项目目录下的 pom.xml 中添加如下设置来引入服务依赖。引入依赖后,Maven 项目管理工具会自动下载相关 JAR 包。

说明

如果您的 Java JDK 版本为 JDK 9 或以上版本,还需要额外添加 javax.annotation-api 依赖,请在 pom.xml 中添加如下内容。

<dependency>
  <groupId>javax.annotation</groupId>
  <artifactId>javax.annotation-api</artifactId>
  <version>1.3.2</version>
</dependency>
<dependencies>
  <dependency>
    <groupId>com.volcengine</groupId>
    <artifactId>volcengine-java-sdk-Redis</artifactId>
   <version>0.1.90</version>
  </dependency>
</dependencies>

请求超时时间设置

使用 Java SDK 调用 Redis 接口时,默认无超时时间设置。
您可以在初始化客户端时,通过 setConnectTimeout(${超时时间})(默认单位:毫秒) 来指定客户端的请求超时时间,若未在该时间内完成,请求即会终止并报超时错误。
例如,您可以通过如下代码将客户端的请求超时时间设置为 5000 毫秒。

public static ApiClient apiClient = new ApiClient()
        .setCredentials(Credentials.getCredentials(ak,sk))
        .setRegion(region).setConnectTimeout(5000);

代码示例

使用 Redis Java SDK 前需确保已获取如下信息:

  • 账号的 Access Key ID(简称 AK)和 Secret Access Key(简称 SK)信息。获取 AKSK 信息的方法,请参见查看 AKSK 信息

  • Region 信息。Redis 支持的 Region,请参见服务地址

创建 Redis 企业版实例

说明

关于下述 SDK 代码中所使用参数的定义、取值范围等信息,请参见 CreateEnterpriseDBInstance

创建 1 个 Redis 企业版实例,配置如下:

  • 购买时长:2 个月,且不开启自动续费。
  • 数据存储形态:混存型。
  • 单分片 RAM 容量:8GiB(即 8192MiB)。
  • 单分片高速存储容量:10GiB(即 10240MiB)。
  • 分片数:2。
  • 部署在华北2(北京)地域下的可用区 A 和 B,其中可用区 A 为主节点所在可用区。
  • 需要使用 RedisJSON、RedisBloom、RedisGears 模块。
  • 绑定至 acl-cq014ioqkm9zt5j****acl-cq015pp15v8buvl**** 两个白名单。
  • 绑定 department:gameowner:Alice 两个标签。
import com.volcengine.ApiClient;
import com.volcengine.ApiException;
import com.volcengine.sign.Credentials;

import com.volcengine.redis.RedisApi;
import com.volcengine.redis.model.*;

import java.util.Arrays;

public class TestRedis {
    public static void main(String[] args) throws Exception {
        // 设置 AKSK 验证信息及 Region
        // 注意示例代码安全,代码泄漏会导致 AKSK 泄漏,有极大的安全风险。
        String ak = "Your AK";
        String sk = "Your SK";
        String region = "Your Region";

        ApiClient apiClient = new ApiClient()
                .setCredentials(Credentials.getCredentials(ak, sk))
                .setRegion(region);
        RedisApi redisApi = new RedisApi(apiClient);
        
        //创建一个接口入参
        CreateEnterpriseDBInstanceRequest request = new CreateEnterpriseDBInstanceRequest();   
        // 设置需要创建实例的配置信息
        // 如下代码示例中仅使用了 CreateEnterpriseDBInstance 接口中的必填参数和部分选填参数
        request.setRegionId("cn-beijing");
        request.setMultiAZ("enabled");

        List<ConfigureNodeForCreateEnterpriseDBInstanceInput> configureNodes = new ArrayList<>();
        ConfigureNodeForCreateEnterpriseDBInstanceInput primaryZone = new ConfigureNodeForCreateEnterpriseDBInstanceInput();
        primaryZone.setAZ("cn-beijing-a");
        configureNodes.add(primaryZone);
        ConfigureNodeForCreateEnterpriseDBInstanceInput secondaryZone = new ConfigureNodeForCreateEnterpriseDBInstanceInput();
        secondaryZone.setAZ("cn-beijing-b");
        configureNodes.add(secondaryZone);
        request.setConfigureNodes(configureNodes);
        
        request.setDataLayout("Hybrid");
        request.setShardNumber(2);
        request.setRamPerShard(8192);
        request.setFlashPerShard(10240);
        request.setChargeType("PrePaid");
        request.setPurchaseMonths(2);
        request.setAutoRenew(false);
        request.setPassword("Pwd@12****");
        request.setVpcId("vpc-rs5811nceqyov0x58x4****");
        request.setSubnetId("subnet-1g15j13jtzgu88ibuxwqp****");

        List<String> modules  = new ArrayList<>();
        modules.add("RedisJSON");
        modules.add("RedisBloom");
        modules.add("RedisGears");
        request.setModules(modules);
        

        List<String> allowListIds = new ArrayList<>();
        allowListIds.add("acl-cq014ioqkm9zt5j****");
        allowListIds.add("acl-cq015pp15v8buvl****");
        request.setAllowListIds(allowListIds);

        List<TagForCreateEnterpriseDBInstanceInput> tags = new ArrayList<>();
        TagForCreateEnterpriseDBInstanceInput departmentTag = new TagForCreateEnterpriseDBInstanceInput();
        departmentTag.setKey("department");
        departmentTag.setValue("game");
        tags.add(departmentTag);
        TagForCreateEnterpriseDBInstanceInput ownerTag = new TagForCreateEnterpriseDBInstanceInput();
        ownerTag.setKey("owner");
        ownerTag.setValue("Alice");
        tags.add(ownerTag);
        request.setTags(tags);  

        //调用接口创建一个 Redis 实例
        try {
            // 复制代码运行示例,请自行打印 API 返回值。
            CreateEnterpriseDBInstanceResponse response = redisApi.createEnterpriseDBInstance(request);
            System.out.println(response);
        } catch (ApiException e) {
            // 复制代码运行示例,请自行打印 API 错误信息。
            System.out.println(e.getResponseBody());
        }
    }
 }

查询指定 Redis 企业版实例信息

说明

关于下述 SDK 请求中所使用参数的定义、取值范围等信息,请参见 DescribeEnterpriseDBInstanceDetail

import com.volcengine.ApiClient;
import com.volcengine.ApiException;
import com.volcengine.sign.Credentials;

import com.volcengine.redis.RedisApi;
import com.volcengine.redis.model.*;

import java.util.Arrays;

public class TestRedis {
    public static void main(String[] args) throws Exception {
        // 设置 AKSK 验证信息及 Region
        // 注意示例代码安全,代码泄漏会导致 AKSK 泄漏,有极大的安全风险。
        String ak = "Your AK";
        String sk = "Your SK";
        String region = "Your Region";

        ApiClient apiClient = new ApiClient()
                .setCredentials(Credentials.getCredentials(ak, sk))
                .setRegion(region);
        RedisApi redisApi = new RedisApi(apiClient);
        
        //创建一个接口入参
        DescribeEnterpriseDBInstanceDetailRequest request = new DescribeEnterpriseDBInstanceDetailRequest();   
        //根据 DescribeEnterpriseDBInstanceDetail 接口的参数说明,设置接口入参
        request.setInstanceId("redis-cn0212gzmh2xs****");
        
        //调用接口查询指定 Redis 实例的详细信息
        try {
            // 复制代码运行示例,请自行打印 API 返回值。
            DescribeEnterpriseDBInstanceDetailResponse response = redisApi.describeEnterpriseDBInstanceDetail(request);
            System.out.println(response);
        } catch (ApiException e) {
            // 复制代码运行示例,请自行打印 API 错误信息。
            System.out.println(e.getResponseBody());
        }
    }
 }