更新时间: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使用建议参考开发运维规范。