更新时间:2025-07-29 GMT+08:00
通过Jedis连接实例
本章节介绍使用Jedis(JAVA客户端)访问GeminiDB Redis实例的方法。
由于GeminiDB Redis的“Proxy集群”架构提供了统一的负载均衡地址,并提供高可用能力,因此推荐使用JedisPool单机模式轻松接入。
此外,GeminiDB Redis对JedisSentinelPool、JedisCluster两种模式也提供支持。
前提条件
- 已成功创建GeminiDB Redis实例,且实例状态正常。创建GeminiDB Redis实例的方法请参见购买GeminiDB Redis集群版实例。
- 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器快速入门》中“购买弹性云服务器”章节。
- 弹性云服务器上已经安装GCC等编译工具。
- 创建的弹性云服务器与GeminiDB Redis实例要保证区域、可用区、VPC和安全组一致。
pom文件依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.3.6.RELEASE</version>
</dependency>
样例代码
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisPoolTests {
private static void testPool() {
// 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全;
// 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
String pwd = System.getenv("EXAMPLE_PASSWORD_ENV");
JedisPool pool = new JedisPool(new GenericObjectPoolConfig(), "172.xx.xx.xx", 6379,
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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图1 查看负载均衡地址
- 上述代码中的“6379”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看GeminiDB Redis IP地址和端口。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hashtag,否则会出现非预期的行为。hashtag使用建议参考开发运维规范。
样例代码
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", 6379),
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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图2 查看负载均衡地址
- 上述代码中的“6379”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看GeminiDB Redis IP地址和端口。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hashtag,否则会出现非预期的行为。hashtag使用建议参考开发运维规范。
样例代码
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:6379");
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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图3 查看负载均衡地址
- 上述代码中的“6379”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看GeminiDB Redis IP地址和端口。
- 上述代码中的master-name只能是“mymaster”。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hashtag,否则会出现非预期的行为。hashtag使用建议参考开发运维规范。