通过Jedis连接实例
本章节介绍使用Jedis(JAVA客户端)访问GeminiDB Redis实例的方法。
由于GeminiDB Redis的“Proxy集群”架构提供了统一的负载均衡地址,并提供高可用能力,因此推荐使用JedisPool单机模式轻松接入。
此外,GeminiDB 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() { // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 String pwd = System.getenv("EXAMPLE_PASSWORD_ENV"); 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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图1 查看负载均衡地址
- 上述代码中的“8635”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB 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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图2 查看负载均衡地址
- 上述代码中的“8635”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB 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”为待连接GeminiDB Redis实例的负载均衡地址。
您可以单击实例名称,进入“基本信息”页面,在网络信息区域获取“负载均衡地址”。
图3 查看负载均衡地址
- 上述代码中的“8635”为待连接GeminiDB Redis实例的端口,具体请以实际端口为准。获取端口的方法请参见查看IP地址和端口。
- 上述代码中的master-name只能是“mymaster”。
- GeminiDB Redis支持与限制的命令,详情请参见开发运维规范。
- 由于GeminiDB Redis和开源Redis集群计算hash算法不同,因此GeminiDB Redis的部分命令需要给对应的key打上hash tag,否则会出现非预期的行为。hash tag使用建议参考开发运维规范。