
# Redis-cli客户端连接Redis
本章节介绍使用redis-cli客户端连接Redis实例的方法，更多客户端的使用方法请参考[Redis客户端](https://redis.io/clients)。
以下操作以通过弹性云服务器上的客户端连接Redis实例为例进行说明。
如果是公网访问Redis 3.0实例，请参考[Redis-cli客户端公网连接Redis 3.0](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0513002.html)。
#### 操作视频
本视频演示如何使用redis-cli客户端连接Redis实例。因产品功能演进，操作界面可能存在差异，相关视频仅供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object88951556112116" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/DCS/visitRedis.mp4" title="连接Redis" poster="https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002342393828.jpg" height="335.0000" width="600.0000"></video>
#### 前提条件
- 已成功创建Redis实例，且状态为"运行中"。创建Redis实例的操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 已创建弹性云服务器，且需要绑定弹性公网IP。创建弹性云服务器的方法，请参见[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 如果弹性云服务器为Linux系统，该弹性云服务器必须已经安装gcc编译环境（可通过**gcc --version** 命令查询gcc版本，如果已安装gcc编译环境，会返回gcc版本）。
  如果ECS未安装gcc编译环境，以CentOS系统为例，请执行以下命令进行安装：
  ```
  yum install -y make
  yum install -y pcre-devel
  yum install -y zlib-devel
  yum install -y libevent-devel
  yum install -y openssl-devel
  yum install -y gcc-c++
  ```
  
- 连接实例前确保客户端与Redis实例之间网络互通，具体请参考[连接Redis网络要求](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312007.html)。
 
 #### 获取Redis实例的IP地址/域名和端口
1. 登录[分布式缓存服务管理控制台](https://console.huaweicloud.com/dcs)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002311976116.png)，选择实例所在的区域。
3. 单击左侧菜单栏的"缓存管理"。
4. 单击需要连接的Redis实例名称，进入实例详情页面。
5. 在"连接信息"区域获取实例的地址和端口。
   - 客户端通过内网访问Redis时，请使用"连接地址"或"IP地址"，如[图1]。关于使用域名地址（连接地址）还是IP地址连接实例，请参见[应该选择域名还是IP地址连接Redis实例？](https://support.huaweicloud.com/dcs_faq/dcs-faq-022025.html)。
     图1获取实例连接地址   
     ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002345895113.png "点击放大")
     - "连接地址"和"IP地址"后的信息即为该Redis实例的"域名地址:端口"和"IP地址:端口"。本文操作步骤中涉及实例端口时，统一以6379为例，连接实例时请根据实际情况替换。
     
     - Redis 4.0及以上版本的Proxy集群实例，"连接地址"和"IP地址"为负载均衡器地址，系统会将请求分发到不同的Proxy节点上。
     
     - Redis 3.0 Proxy集群使用"后端服务地址"，可以连接到指定的Proxy节点。
      
   
   - 当客户端公网访问Redis时，请参考[开启Redis公网访问并获取公网访问地址](https://support.huaweicloud.com/usermanual-dcs/dcs_03_0011.html)，获取实例公网访问地址及端口。
    
 
#### Redis-cli客户端（Linux版）连接Redis
- 当连接单机、主备、读写分离、Proxy集群实例时，请参见Redis-cli客户端连接**非Cluster集群**实例。
- 当连接Cluster集群实例时，请参见Redis-cli客户端连接**Cluster集群**实例。
 
- [Redis-cli客户端连接非Cluster集群实例]
  1. 安装redis-cli客户端。以下步骤以客户端安装在Linux系统上为例进行描述。 
     1. 登录弹性云服务器。登录弹性云服务器的方式，请参见[通过VNC登录Linux ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0136.html)（此处仅以通过VNC登录Linux ECS为例，您可以根据需要选择其他登录方式）。
     
     2. 执行以下命令，获取Redis客户端源码，下载路径为https://download.redis.io/releases/redis-6.2.13.tar.gz。
        ```
        wget http://download.redis.io/releases/redis-6.2.13.tar.gz
        ```
        此处以安装redis-6.2.13版本为例，您也可以安装其他版本。具体操作，请参见[Redis官网](https://redis.io/download?spm=a2c4g.11186623.2.15.4e732074zS4LSS#installation)。
        
     
     3. 执行如下命令，解压Redis客户端源码包。
        ```
        tar -xzf redis-6.2.13.tar.gz
        ```
        
     
     4. 进入Redis目录并编译Redis客户端源码。
        ```
        cd redis-6.2.13
        cd src
        make
        make install
        ```
        如果编译的Redis源码为6.0及以上版本，且需要使用支持TLS/SSL的redis-cli，请将以上命令中的**make** 替换为**make BUILD_TLS=yes**开启TLS。
        
     
     
     
     
  
  2. 连接Redis实例。 
     1. 执行以下命令连接Redis实例。
        ```
        ./redis-cli -h {dcs_instance_address} -p {port}
        ```
        其中**{dcs_instance_address}** 为Redis实例的IP地址/域名，**{port}** 为连接Redis实例的端口，请根据实际情况修改。IP地址/域名和端口获取见[获取Redis实例的IP地址/域名和端口]。
        以使用Redis实例的域名连接地址为例，连接成功的返回示例如下：
        ```
        [root@ecs-redis src]# ./redis-cli -h redis-069949a-dcs-xxxx.com -p 6379
        redis-069949a-dcs-xxxx.com:6379>
        ```
        
     
     2. 如果Redis实例设置了密码访问，则执行本步骤输入密码，校验通过后才可进行缓存数据读写，免密访问的实例无需该步骤。
        ```
        auth {password}
        ```
        其中**{password}** 为创建Redis实例时自定义的密码（即实例默认账号的密码），请按实际密码修改后执行。如果使用实例创建的ACL账号连接，实例密码需要配置为"账号名称:账号密码"，即**auth {username:password}** 。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。
        密码访问成功的回显示例如下：
        ```
        redis-069949a-dcs-xxxx.com:6379> auth *******
        OK
        redis-069949a-dcs-xxxx.com:6379>
        ```
        
     
     3. 连接成功后即可执行Redis命令。 例如，通过SET命令写入一个名称为"KEY_NAME"，值为"VALUE"的数据，按Enter键执行。返回OK时，说明数据写入成功。
        ```
        SET KEY_NAME VALUE
        ```
        数据写入成功后，执行GET命令读取写入的数据名称，会返回对应的数据值。
        ```
        GET KEY_NAME
        ```
        
     
     
     
     
   
- [Redis-cli客户端连接Cluster集群实例]
  1. 安装redis-cli客户端。 
     以下步骤以客户端安装在Linux系统上为例进行描述。
     1. 登录弹性云服务器。
     
     2. 执行以下命令，获取Redis客户端源码，下载路径为https://download.redis.io/releases/redis-6.2.13.tar.gz。
        ```
        wget http://download.redis.io/releases/redis-6.2.13.tar.gz
        ```
        此处以安装redis-6.2.13版本为例，您也可以安装其他版本。具体操作，请参见[Redis官网](https://redis.io/download?spm=a2c4g.11186623.2.15.4e732074zS4LSS#installation)。
        
     
     3. 执行如下命令，解压Redis客户端源码包。
        ```
        tar -xzf redis-6.2.13.tar.gz
        ```
        
     
     4. 进入Redis目录并编译Redis客户端源码。
        ```
        cd redis-6.2.13
        cd src
        make
        make install
        ```
        如果编译的Redis源码为6.0及以上版本，且需要使用支持TLS/SSL的redis-cli，请将以上命令中的**make** 替换为**make BUILD_TLS=yes**开启TLS。
        
     
     
     
     
  
  2. 连接Redis实例。 
     1. 执行以下命令连接Redis实例。
        ```
        ./redis-cli -h {dcs_instance_address} -p {port} -a {password} -c
        ```
        ![](https://support.huaweicloud.com/usermanual-dcs/public_sys-resources/caution_3.0-zh-cn.png)
        在使用redis-cli连接Cluster集群时，请注意连接命令需要加上**-c**，否则会出现连接失败的问题。
        - 其中**，** **{dcs_instance_address}** 为Redis实例的IP地址/域名，**{port}** 为Redis实例的端口，**{password}** 为Cluster集群实例的密码，**-c** 为连接集群节点时使用，请根据实际情况修改。IP地址/域名和端口获取见[获取Redis实例的IP地址/域名和端口]。
        
        - 客户端通过内网连接Redis时，**{dcs_instance_address}** 参数的值可以为Redis实例"连接地址"、"IP地址"、及"实例拓扑"图中分片上的"节点连接地址"。获取方法，在控制台单击实例进入实例详情页面即可查看，如[图2]所示。
        
        - 如果实例已开启免密访问，则无需输入实例的访问密码**-a{password}** ，如果忘记密码或需要重置密码请参考[重置缓存实例密码](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312039.html#dcs-ug-0312039__section7753521111)。如果使用实例创建的ACL账号连接，实例密码需要配置为"账号名称:账号密码"，即**-a{username:password}** 。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。
        
        - Cluster集群实例的"IP地址"字段中提供了多个IP，如[图2]所示。任意一个IP地址均可用于连接实例，在连接时，任选其中一个IP连接，都表示可以连接上集群实例，在进行数据读写时，key存储在哪个slot中，由Crc16(key) mod 16384的值决定。**推荐配置全部IP地址，可靠性更强**。
        
        - 如果使用如[图2]所示的实例拓扑图中分片上的"节点连接地址"连接Redis，可以直接连接到指定的分片。
          图2获取Cluster集群实例连接地址   
          ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002280475744.png "点击放大") 
        
        
        
        - 如果使用实例的IP地址连接Redis，连接成功的返回示例如下。
          ```
          root@ecs-redis:~/redis-6.2.13/src# ./redis-cli -h 192.168.0.85 -p 6379 -a ****** -c
          192.168.0.85:6379>
          ```
          
        
        - 如果使用实例的域名连接地址连接Redis，连接成功的返回示例如下。
          ```
          root@ecs-redis:~/redis-6.2.13/src# ./redis-cli -h redis-51e463c-dcs-xxxx.com -p 6379 -a ****** -c
          redis-51e463c-dcs-xxxx.com:6379>
          ```
          
         
     
     2. 执行**cluster nodes** 查看Cluster集群节点信息。
        Cluster集群每一个分片都是一主一从的双副本结构，执行该命令可以查看该实例的所有节点信息及节点连接状态，如下所示。
        ```
        192.168.0.85:6379> cluster nodes
        0988ae8fd3686074c9afdcce73d7878c81a33ddc 192.168.0.231:6379@16379 slave f0141816260ca5029c56333095f015c7a058f113 0 1568084030000 3 connected
        1a32d809c0b743bd83b5e1c277d5d201d0140b75 192.168.0.85:6379@16379 myself,master - 0 1568084030000 2 connected 5461-10922
        c8ad7af9a12cce3c8e416fb67bd6ec9207f0082d 192.168.0.130:6379@16379 slave 1a32d809c0b743bd83b5e1c277d5d201d0140b75 0 1568084031000 2 connected
        7ca218299c254b5da939f8e60a940ac8171adc27 192.168.0.22:6379@16379 master - 0 1568084030000 1 connected 0-5460
        f0141816260ca5029c56333095f015c7a058f113 192.168.0.170:6379@16379 master - 0 1568084031992 3 connected 10923-16383
        19b1a400815396c6223963b013ec934a657bdc52 192.168.0.161:6379@16379 slave 7ca218299c254b5da939f8e60a940ac8171adc27 0 1568084031000 1 connected
        ```
        备节点只能进行只读操作，不能进行写操作。在进行数据写入时，key存储在哪个slot中，由Crc16(key) mod 16384的值决定。
        如下所示，数据写入时，根据Crc16(key) mod 16384的值决定key存储位置，并跳转到该slot所在的节点上。
        ```
        192.168.0.170:6379> set hello world
        -> Redirected to slot [866] located at 192.168.0.22:6379
        OK
        192.168.0.22:6379> set happy day
        OK
        192.168.0.22:6379> set abc 123
        -> Redirected to slot [7638] located at 192.168.0.85:6379
        OK
        192.168.0.85:6379> get hello
        -> Redirected to slot [866] located at 192.168.0.22:6379
        "world"
        192.168.0.22:6379> get abc
        -> Redirected to slot [7638] located at 192.168.0.85:6379
        "123"
        192.168.0.85:6379>
        ```
        
     
     
     
     
   
#### SSL连接配置（可选配置）
当Redis 6.0/7.0基础版实例开启了SSL时，需要配置SSL证书路径。
- Cluster集群连接命令：
  ```
  ./redis-cli -h {dcs_instance_address} -p {port} -a {password} -c --tls --cacert {certification file path}
  ```
  
- 单机、主备连接命令：
  ```
  ./redis-cli -h {dcs_instance_address} -p {port} -a {password} --tls --cacert {certification file path}
  ```
  
 
（通过SSL加密连接Redis时，请使用6.x及以上版本的redis-cli客户端）
开启SSL并获取SSL证书的操作，请参见[配置Redis SSL数据加密传输](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-023129.html)。
#### Redis-cli客户端（Windows版）连接Redis
Windows版本的Redis客户端安装包，请单击[这里](https://github.com/MicrosoftArchive/redis/tags)下载编译包。下载后直接解压安装到自定义目录，然后使用cmd工具进入该目录，执行以下命令连接redis实例：
```
redis-cli.exe -h XXX -p 6379
```
其中："XXX"为Redis实例的IP地址/域名，"6379"为Redis实例的端口。IP地址/域名和端口获取见[获取Redis实例的IP地址/域名和端口]，请按实际情况修改后执行。
#### 相关文档
如果Redis连接过程出现问题，请参见[Redis连接失败问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715001.html)。
