云数据库Redis与原生Redis完全兼容,连接数据库的方式也基本相同,您可以根据自身应用特点选用任何兼容Redis协议的客户端程序。本文列举一些常见的客户端程序的代码示例,帮助您快速连接。
前提条件根据客户端程序的部署位置,完成下述操作:
客户端程序部署位置
需完成的操作
确保ECS实例与Redis实例属于同一专有网络(即实例基本信息中的专有网络ID一致)。
说明
如果专有网络不同,您可以更换ECS实例所属的专有网络。具体操作,请参见
如果网络类型不同,例如ECS实例为经典网络,Redis实例为专有网络。如何连接,请参见
获取ECS实例的内网IP地址。具体操作,请参见
将ECS实例的内网IP地址添加至Redis实例的白名单中。具体操作,请参见
本地
Redis实例默认仅提供内网连接地址,通过公网连接时您需要手动申请公网连接地址。具体操作,请参见
在本地客户端所属的设备上执行curl ipinfo.io |grep ip获取其公网IP地址,返回示例如下:
说明 如果本地客户端所属设备为Windows操作系统,您可以访问
将本地客户端的公网IP地址添加至Redis实例的白名单中。具体操作,请参见
注意事项
如果您的Redis实例为
说明 集群架构的实例通过
如果实例开启了
如何获取连接信息
在使用客户端程序连接Redis实例时,通常您需要获取以下信息并设置在代码中:
需获取的信息
获取方式
实例的连接地址
Redis实例支持多种连接地址,推荐使用专有网络连接,可获得更高的安全性和更低的网络延迟。更多信息,请参见
端口号
端口号默认为6379,您也可以自定义端口号。具体操作,请参见
实例的账号(部分客户端程序无需设置)
Redis实例默认会创建一个以实例ID命名的账号(例如r-bp10noxlhcoim2****),您也可以创建一个新的账号并赋予权限。更多信息,请参见
账号的密码
根据选取账号的不同,密码的填写格式有一定区别:
默认账号(即以实例ID命名的账号):直接填写密码即可。
新创建的账号:密码格式为:。例如自定义账号为testaccount,密码为Rp829dlwa,密码需填写为testaccount:Rp829dlwa。
说明 如果忘记密码,请参见
Jedis客户端
下载并安装Jedis客户端。具体操作,请参见
根据业务需求选择连接方式。
JedisPool连接池连接(推荐)
打开Eclipse客户端,创建一个Project并配置pom文件,具体内容如下:
redis.clients
jedis
2.7.2
jar
compile
在Project中输入下述代码添加相关应用。 import org.apache.commons.pool2.PooledObject;
import org.apache.commons.pool2.PooledObjectFactory;
import org.apache.commons.pool2.impl.DefaultPooledObject;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
根据Jedis客户端版本,在Project中输入下述代码,然后根据注释提示修改代码。
说明 关于如何获取Redis实例的连接地址和密码,请参见
Jedis 2.7.2版本JedisPoolConfig config = new JedisPoolConfig();
//最大空闲连接数,需自行评估,不超过Redis实例的最大连接数
config.setMaxIdle(200);
//最大连接数,需自行评估,不超过Redis实例的最大连接数
config.setMaxTotal(300);
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
String host = "*.aliyuncs.com";
String password = "密码";
JedisPool pool = new JedisPool(config, host, 6379, 3000, password);
Jedis jedis = null;
try {
jedis = pool.getResource();
/// ... do stuff here ... for example
jedis.set("foo", "bar");
String foobar = jedis.get("foo");
jedis.zadd("sose", 0, "car");
jedis.zadd("sose", 0, "bike");
Set sose = jedis.zrange("sose", 0, -1);
} finally {
if (jedis != null) {
jedis.close();
}
}
/// ... when closing your application:
pool.destroy();
Jedis 2.6或Jedis 2.5版本JedisPoolConfig config = new JedisPoolConfig();
//最大空闲连接数,需自行评估,不超过Redis实例的最大连接数
config.setMaxIdle(200);
//最大连接数,需自行评估,不超过Redis实例的最大连接数
config.setMaxTotal(300);
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
String host = "*.aliyuncs.com";
String password = "密码";
JedisPool pool = new JedisPool(config, host, 6379, 3000, password);
Jedis jedis = null;
boolean broken = false;
try {
jedis = pool.getResource();
/// ... do stuff here ... for example
jedis.set("foo", "bar