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使用建议参考使用规范。