• 沒有找到結果。

2.3 连接实例

2.3.4 程序代码连接实例

2.3.4.1 通过 Jedis 连接实例

本章节介绍使用Jedis(JAVA客户端)访问GaussDB(for Redis)实例的方法。

由于GaussDB(for Redis)的“Proxy集群”架构提供了统一的负载均衡地址,并提供高 可用能力,因此推荐使用JedisPool单机模式轻松接入。

此外,GaussDB(for Redis)对JedisSentinelPool、JedisCluster两种模式也提供支持。

使用 JedisPool 访问(推荐)

样例代码

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

public class JedisPoolTests { private static void testPool() { String pwd = "a";

JedisPool pool = new JedisPool(new GenericObjectPoolConfig(), "172.xx.xx.xx", 8635, 2000, pwd);

Jedis jedis = pool.getResource();

try {

System.out.println(jedis.hgetAll("676296"));

System.out.println(jedis.set("key1", "value1"));

} finally { jedis.close();

}

pool.destroy();

}

public static void main(String[] args) { testPool();

}}

● 上述代码中“172.xx.xx.xx”为待连接GaussDB(for Redis)实例的节点IP,可以是 内网IP、负载均衡地址或者弹性公网IP,请结合实际业务场景选用。为了实现访问 的高可用,推荐您使用负载均衡地址。

以下分别是获取负载均衡地址、内网IP或弹性公网IP的方法。

– 获取负载均衡地址

因该功能目前处于公测阶段,您可以联系客服申请免费使用。

待负载均衡地址申请创建成功后,您可以单击实例名称,进入“基本信息”

页面,在网络信息区域获取“负载均衡地址”。

2-23 查看负载均衡地址

– 获取内网IP或者弹性公网IP

请参见查看IP地址和端口获取对应节点的内网IP或者弹性公网IP地址。如果您 购买的实例有多个节点,选择其中任意一个节点的内网IP或弹性公网IP即可连 接GaussDB(for Redis)实例。

● 上述代码中的“8635”为待连接GaussDB(for Redis)实例的端口,一般默认为 8635,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。

● GaussDB(for Redis)支持与限制的命令,详情请参见使用规范。

● 由于GaussDB(for Redis)和开源Redis集群计算hash算法不同,因此GaussDB(for Redis)的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。

hash tag使用建议参考使用规范。

使用 JedisCluster 访问

样例代码

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import redis.clients.jedis.HostAndPort;

import redis.clients.jedis.JedisCluster;

public class ClusterTests {

private static void testCluster() { String pwd = "a";

JedisCluster cluster = new JedisCluster(new HostAndPort("172.xx.xx.xx", 8635), 200, 2000, 5, pwd, new GenericObjectPoolConfig());

System.out.println(cluster.hgetAll("676296"));

System.out.println(cluster.set("key1", "value1"));

}

public static void main(String[] args) { testCluster();

}}

● 上述代码中“172.xx.xx.xx”为待连接GaussDB(for Redis)实例的节点IP,可以是 内网IP或者弹性公网IP,请结合实际业务场景选用。

请参见查看IP地址和端口获取对应节点的内网IP或者弹性公网IP地址。如果您购买 的实例有多个节点,选择其中任意一个节点的内网IP或弹性公网IP即可连接 GaussDB(for Redis)实例。

● 上述代码中的“8635”为待连接GaussDB(for Redis)实例的端口,一般默认为 8635,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。

● GaussDB(for Redis)支持与限制的命令,详情请参见使用规范。

● 由于GaussDB(for Redis)和开源Redis集群计算hash算法不同,因此GaussDB(for Redis)的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。

hash tag使用建议参考使用规范。

使用 JedisSentinelPool 访问

样例代码

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisSentinelPool;

import java.util.HashSet;

import java.util.Set;

public void SentinelTest {

public static void main(String[] args) {

GenericObjectPoolConfig<Jedis> config = new GenericObjectPoolConfig<Jedis>();

Set<String> mySentinels = new HashSet<String>();

mySentinels.add("172.xx.xx.xx:8635");

JedisSentinelPool pool = new JedisSentinelPool(master-name, mySentinels, config, 1000, password, 0);

Jedis jedis = pool.getResource();

jedis.auth(password);

jedis.set("foo", "bar");

String s = jedis.get("foo");

System.out.println(s);

jedis.close();

pool.close();

} }

● 上述代码中“172.xx.xx.xx”为待连接GaussDB(for Redis)实例的节点IP,可以是 内网IP或者弹性公网IP,请结合实际业务场景选用。

请参见查看IP地址和端口获取对应节点的内网IP或者弹性公网IP地址。如果您购买 的实例有多个节点,选择其中任意一个节点的内网IP或弹性公网IP即可连接 GaussDB(for Redis)实例。

● 上述代码中的“8635”为待连接GaussDB(for Redis)实例的端口,一般默认为 8635,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。

● 上述代码中的master-name只能是“mymaster”。

● GaussDB(for Redis)支持与限制的命令,详情请参见使用规范。

● 由于GaussDB(for Redis)和开源Redis集群计算hash算法不同,因此GaussDB(for Redis)的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。

hash tag使用建议参考使用规范。