
# Phpredis客户端连接Redis（PHP）
本章节介绍使用phpredis客户端连接Redis的方法。更多的客户端的使用方法请参考[Redis客户端](https://redis.io/clients)。
以下操作以通过弹性云服务器上的客户端连接Redis实例为例进行说明。
#### 约束与限制
本章节操作，仅适用于连接单机、主备、Proxy集群实例，如果是使用phpredis客户端连接Cluster集群，请参考[phpredis客户端使用说明](https://github.com/phpredis/phpredis#readme)。
#### 前提条件
- 已成功创建Redis实例，且状态为"运行中"。创建Redis实例的操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 已创建弹性云服务器，创建弹性云服务器的方法，请参见[购买弹性云服务器](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)。
 
#### Phpredis客户端连接Redis
1. 查看并获取待连接Redis实例的IP地址/域名和端口。
   
   具体步骤请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)。
   
   
2. 登录弹性云服务器。 
   本章节以弹性云服务器操作系统为centos为例介绍通过phpredis客户端连接实例。
   
   
3. 安装gcc-c++及make等编译组件。 
   **yum install gcc-c++ make**
   
   
4. 安装php开发包与命令行工具。 
   执行如下命令，使用yum方式直接安装。
   **yum install php-devel php-common php-cli**
   安装完后可查看版本号，确认成功安装：
   **php --version**
   
   
5. 安装phpredis客户端。 
   1. 下载php redis源文件。 **wget http://pecl.php.net/get/redis-5.3.7.tgz**
      仅以该版本作为示例，您还可以去redis官网或者php官网下载其他版本的phpredis客户端。
      
   
   2. 解压php redis源文件包。 **tar -zxvf redis-5.3.7.tgz**
      **cd redis-5.3.7**
      
   
   3. 编译前先执行扩展命令。 **phpize**
      
   
   4. 配置php-config文件。 **./configure --with-php-config=/usr/bin/php-config**
      不同操作系统，不同的php安装方式，该文件位置不一样。建议在配置前，先查找和确认该文件的目录：
      **find / -name php-config**
      
   
   5. 编译和安装phpredis客户端。 **make \&\& make install**
      
   
   6. 安装完后在php.ini文件中增加extension配置项，用于增加redis模块的引用配置。 **vim /etc/php.ini**
      增加如下配置项：
      ```
      extension = "/usr/lib64/php/modules/redis.so"
      ```
      ![](https://support.huaweicloud.com/usermanual-dcs/public_sys-resources/note_3.0-zh-cn.png)
      php.ini和redis.so两个文件的目录可能不同，需要先查找确认。
      例如：**find / -name php.ini**
      
   
   7. 保存退出后确认扩展生效。 **php -m \|grep redis**
      如果以上命令返回了redis，表示phpredis客户端环境搭建好了。
      
   
   
   
   
6. 使用phpredis客户端连接Redis实例。 
   1. 编辑一个redis.php文件：
      ```
      <?php
          $redis_host = "{redis_instance_address}";
          $redis_port = {port};
          $user_pwd = "{password}";
          $redis = new Redis();
          if ($redis->connect($redis_host, $redis_port) == false) {
             die($redis->getLastError());
          }
          if ($redis->auth($user_pwd) == false) {
              die($redis->getLastError());
          }
          if ($redis->set("welcome", "Hello, DCS for Redis!") == false) {
              die($redis->getLastError());
          }
          $value = $redis->get("welcome");
          echo $value;
          $redis->close();
      ?>
      ```
      其中，{redis_instance_address}为Redis实例的IP地址/域名，{port}为Redis实例的端口。IP地址/域名和端口获取见[1]，请按实际情况修改后执行。{password}为创建Redis实例时自定义的密码，请按实际情况修改后执行。如果实例为免密访问，请将密码认证的if语句屏蔽。如果使用实例创建的ACL账号连接，实例密码**{password}** 需要配置为"账号名称:账号密码"，即**{username:password}** 。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。
      
   
   2. 执行**php redis.php** ，连接Redis实例，连接成功后返回如下。
      ```
      # php redis.php 
      Hello, DCS for Redis!
      ```
      
   
   
   
   
 
#### 相关文档
如果Redis连接过程出现问题，请参见[Redis连接失败问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715001.html)。
