全部产品
Search
文档中心

云数据库 Tair(兼容 Redis®):步骤3:连接实例

更新时间:Apr 16, 2025

本示例指导您通过redis-cli、代码和数据管理DMS快速连接云数据库 Tair(兼容 Redis)

前提条件

操作步骤

redis-cli

本示例在ECS(Linux)上使用redis-cli访问处于同一专有网络的云数据库 Tair(兼容 Redis)

说明

本地连接请申请公网连接地址后使用公网地址连接。

  1. 登录ECS实例,依次执行以下命令,下载、安装编译redis-cli。

    sudo yum -y install gcc            # 安装gcc依赖环境
    wget https://download.redis.io/releases/redis-7.0.0.tar.gz
    tar xzf redis-7.0.0.tar.gz
    cd redis-7.0.0&&make

    本文以redis-7.0.0版本为例演示操作流程,您也可以安装其他版本。编译安装通常需要2分钟~3分钟。

  2. 执行下述命令连接实例。

    src/redis-cli -h hostname -a password -p port

    参数说明:

    • hostname:实例连接地址,您可以在控制台的连接信息区域获取实例的专有网络连接地址,例如r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com,更多信息请参见查看连接地址

    • password:密码

    • port:端口号,默认为6379。

    连接示例:

    src/redis-cli -h r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com -a TestPassword123 -p 6379
  3. 写入与读写数据。

    1. 执行命令SET bar foo

      预计返回OK

    2. 执行命令GET bar

      预计返回"foo"

代码连接

说明

本地连接请申请公网连接地址后使用公网地址连接。

本示例使用Jedis客户端进行连接。其他常见客户端连接代码请参见常见客户端连接示例

  1. 添加pom.xml配置。

    <!-- 导入spring-data-redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
        <!-- spring boot 2.0之后默认使用lettuce客户端, 使用jedis时需要排包 -->
        <exclusions>
            <exclusion>
                <groupId>io.lettuce</groupId>
                <artifactId>lettuce-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 导入jedis -->
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
    </dependency>
  2. 配置连接信息,请根据注释修改对应参数。

    @Configuration
    public class RedisConfig {
        
        @Bean
        JedisConnectionFactory redisConnectionFactory() {
            //本案例仅用于测试连接,生产环境建议将连接信息填写到配置文件中,通过@Value注解读取
            //连接地址(hostName)和端口(port)在实例详情页下方连接信息区域获取,请根据客户端网络环境选择专有网络或公网连接
            RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("r-8vbwds91ie1rdl****.redis.zhangbei.rds.aliyuncs.com", 6379);
            //password填写格式为 账号:密码,例如:账号testaccount,密码Rp829dlwa,password填写testaccount:Rp829dlwa
            //忘记账号密码请在实例详情页左侧菜单列表点击账号管理重置密码或创建账号
            config.setPassword(RedisPassword.of("账号:密码"));
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            // 最大连接数, 根据业务需要设置,不能超过实例规格规定的最大连接数。
            jedisPoolConfig.setMaxTotal(30);
            // 最大空闲连接数, 根据业务需要设置,不能超过实例规格规定的最大连接数。
            jedisPoolConfig.setMaxIdle(20);
            // 关闭 testOn[Borrow|Return],防止产生额外的PING。
            jedisPoolConfig.setTestOnBorrow(false);
            jedisPoolConfig.setTestOnReturn(false);
    
            JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().usePooling().poolConfig(
                    jedisPoolConfig).build();
    
            return new JedisConnectionFactory(config, jedisClientConfiguration);
        }
        @Bean
        public RedisTemplate<String, Object> redisTemplate() {
            RedisTemplate<String, Object> template = new RedisTemplate<>();
            template.setConnectionFactory(redisConnectionFactory());
            template.setKeySerializer(new StringRedisSerializer());
            template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
            return template;
        }
    }
  3. 测试连接。

    @SpringBootTest
    public class RedisTest {
        @Autowired
        private RedisTemplate<String, Object> redisTemplate;
    
        @Test
        void test() {
            try {
                redisTemplate.opsForValue().set("test_key", "hello world!");
                System.out.println("连接成功:"+redisTemplate.opsForValue().get("test_key"));
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("连接出现异常,请根据文档:" +
                        "https://help.aliyun.com/zh/redis/support/how-do-i-troubleshoot-connection-issues-in-apsaradb-for-redis" +
                        "排查网络、白名单、账号密码问题。" +
                        "也可根据报错信息查询文档:https://help.aliyun.com/zh/redis/support/common-errors-and-troubleshooting");
            }
    
        }
    }

    运行上述代码,连接成功将返回如下结果:

    连接成功:hello world!

DMS

  1. 访问实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在页面右上角,单击登录数据库

  3. 在DMS登录页面,选择访问方式密码登录,并输入密码。

    此方式将使用默认账号进行登录,您可以在控制台的账号管理页面查看账号详情信息。

  4. 单击登录

  5. 写入与读写数据。

    1. 在DMS SQLConsole页面,输入命令SET foo hello,并单击执行(F8)

      预计返回OK

    2. 输入命令GET foo,并单击执行(F8)

      预计返回hello

相关文档

以下文档中将提供更详细的说明与示例。

特殊连接方式

  • 启用TLS(SSL)加密连接实例:启用TLS加密功能提高数据链路的安全性,保障数据的完整性。

  • 使用直连模式连接实例:集群架构实例可申请直连地址,通过该地址可直接访问后端的数据分片(类似连接原生Redis集群)。相比 代理模式 ,直连模式节约了通过代理处理请求的时间,可以在一定程度上提高实例的响应速度。

  • 使用Sentinel兼容模式连接实例:实例提供Sentinel(哨兵)兼容模式,开启后客户端可以像连接原生Redis Sentinel一样连接实例。

常见报错

报错信息

原因及解决方法

(error) ERR illegal address

未设置正确的白名单,可依次排查如下事项:

  1. 是否已将客户端的IP地址添加至实例的白名单中,详情请参见设置白名单

  2. 是否选择正确的实例连接地址,例如通过公网连接实例,需连接实例的公网连接地址,若此时选择实例的专有网络连接地址会导致连接失败。

  3. 使用ECS通过专有网络连接时,检查ECS是否与实例为同一VPC,若两者不是同一VPC,则可使用公网的方式进行访问。

排查后,可通过ping 实例地址进行测试,例如ping r-bp1zxszhcgatnx****.redis.rds.aliyuncs.com,若返回正常,则表示客户端与实例可正常连接。

(error) ERR client ip is not in whitelist

Could not connect to Redis

  • (error) ERR invalid password

  • (error) WRONGPASS invalid username-password pair

密码错误,请使用正确的密码和密码格式。根据选取账号的不同,密码格式有一定区别。

  • 使用默认账号:直接填写密码即可。例如实例默认账号为r-bp1zxszhcgatnx****,自定义密码为Password21,密码验证命令为AUTH Password21

  • 使用新创建的账号:密码格式为user:password。例如自定义账号为testaccount,密码为Rp829dlwa,密码验证命令为AUTH testaccount:Rp829dlwa

说明
  • 如果通过第三方数据库管理工具(例如RDM等)连接实例,请在密码框中输入user:password进行连接,请不要在用户名框中输入任何信息,否则会导致连接失败。

  • 如果忘记密码,您可以重置密码。具体操作,请参见修改或重置密码