
# Predis客户端连接Redis（PHP）
本章节介绍使用Predis客户端连接Redis的方法。更多的客户端的使用方法请参考[Redis客户端](https://redis.io/clients)。
以下操作以通过弹性云服务器上的客户端连接Redis实例为例进行说明。
#### 前提条件
- 已成功创建Redis实例，且状态为"运行中"。创建Redis实例的操作请参考[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
- 已创建弹性云服务器，创建弹性云服务器的方法，请参见[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
- 如果弹性云服务器为Linux系统，该弹性云服务器必须已经安装php编译环境。
- 连接实例前确保客户端与Redis实例之间网络互通，具体请参考[连接Redis网络要求](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312007.html)。
 
#### Predis客户端连接Redis
1. 查看并获取待连接Redis实例的IP地址/域名和端口。
   
   具体步骤请参见[查看和修改DCS实例基本信息](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312016.html)。
   
   
2. 登录弹性云服务器。
3. 安装php开发包与命令行工具。执行如下命令，使用yum方式直接安装。 
   ```
   yum install php-devel php-common php-cli
   ```
   
   
4. 安装完后可查看版本号，确认成功安装。 
   ```
   php --version
   ```
   
   
5. 将Predis包下载到/usr/share/php目录下。 
   1. 通过以下命令下载Predis源文件。
      ```
      wget https://github.com/predis/predis/archive/refs/tags/v2.2.2.tar.gz
      ```
      ![](https://support.huaweicloud.com/usermanual-dcs/public_sys-resources/note_3.0-zh-cn.png)
      仅以该版本作为示例，您还可以去redis官网或者php官网下载其他版本的predis客户端。
      
   
   2. 解压Predis源文件包。
      ```
      tar -zxvf predis-2.2.2.tar.gz
      ```
      
   
   3. 将解压好的predis目录重命名为"predis"，并移动到/usr/share/php/下。
      ```
      mv predis-2.2.2 predis
      ```
      
   
   
   
   
6. 编辑一个文件连接redis。 
   - 使用redis.php文件连接Redis单机/主备/Proxy集群示例：
     ```
     <?php
         require 'predis/autoload.php';
         Predis\Autoloader::register();
         $client = new Predis\Client([
           'scheme' => 'tcp' ,
           'host'     => '{redis_instance_address}' ,
           'port'     =>{port} ,
           'password' => '{password}' 
         ]);
         $client->set('foo', 'bar');
         $value = $client->get('foo');
         echo $value;
     ?>
     ```
     
   
   - 使用redis-cluster.php连接Redis Cluster集群代码示例：
     ```
     <?php
        require 'predis/autoload.php';
             $servers = array(
              'tcp://{redis_instance_address}:{port}' 
             );
            $options = array('cluster' => 'redis');
            $client = new Predis\Client($servers, $options);
            $client->set('foo', 'bar');
            $value = $client->get('foo');
            echo $value;
     ?>
     ```
     
   
   
   其中，{redis_instance_address}为Redis实例真实的IP地址/域名，{port}为Redis实例真实的端口。IP地址/域名和端口获取见[1]，请按实际情况修改后执行。{password}为创建Redis实例时自定义的密码，请按实际情况修改后执行。如果免密访问，请将password行去掉。如果使用实例创建的ACL账号连接，实例密码**{password}** 需要配置为"账号名称:账号密码"，即**{username:password}** 。创建或查看ACL账号，请参见[配置Redis ACL访问账号](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-221220.html)。
   
   
7. 执行**php redis.php** ，连接Redis实例，连接成功后返回如下。
   
   ```
   # php redis.php 
   Hello, DCS for Redis!
   ```
   
   
 
#### 相关文档
如果Redis连接过程出现问题，请参见[Redis连接失败问题排查和解决](https://support.huaweicloud.com/trouble-dcs/dcs-trouble-0715001.html)。
