更新时间:2024-10-30 GMT+08:00

通过PHP连接实例

本章节主要介绍使用PHP访问GeminiDB Redis实例的方法。

前提条件

  • 已成功创建GeminiDB Redis实例,且实例状态为“正常”。
  • 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器快速入门》中“购买弹性云服务器”章节。
  • 弹性云服务器上已经安装GCC等编译工具。
  • 创建的弹性云服务器GeminiDB Redis实例要保证区域、可用区、VPC和安全组一致。

操作步骤

  1. 获取GeminiDB Redis实例的负载均衡地址和端口。

  2. 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
  3. 安装PHP开发包与命令行工具。

    执行如下命令,使用yum方式直接安装。

    yum install php-devel php-common php-cli

    以CentOS(redhat系列)为例,如果是Ubuntu(debian系列),则需要使用其对应的安装命令。

  4. 安装完后可查看版本号,确认成功安装。

    php --version

  5. 安装Redis的PHP客户端。

    1. 下载phpredis源文件。

      wget http://pecl.php.net/get/redis-4.1.0RC3.tgz

      以上是当前最新版本,也可以通过PHP官网下载其他版本的phpredis客户端。

    2. 解压phpredis源文件包。

      tar -zxvf redis-4.1.0RC3.tgz

      cd redis-4.1.0RC3

    3. 编译前先执行扩展命令。

      phpize

    4. 配置php-config文件。

      ./configure --with-php-config=/usr/bin/php-config

      不同的操作系统,安装PHP的方式不同,该配置文件位置可能不同。建议在配置前,先确认该文件的目录,命令如下:find / -name php.ini

    5. 编译和安装phpredis客户端。

      make && make install

    6. 安装完后在php.ini文件中增加extension配置项,用于增加redis模块的引用配置。

      使用如下命令,查找到php.ini文件:

      vim /usr/local/php/etc/php.ini

      在php.ini文件中,增加如下配置项:

      extension = "/usr/lib64/php/modules/redis.so"

      php.ini和redis.so两个文件的目录可能不同,可通过如下命令先查找确认。

      find / -name php.ini

      find / -name redis.so

    7. 保存退出后确认扩展生效。

      php -m |grep redis

      如果以上命令返回了redis,表示php redis客户端环境搭建好了。

  6. 使用phpredis客户端连接GeminiDB Redis实例。

    1. 编写测试代码redis.php。
      • 使用PHP单机SDK连接GeminiDB Redis集群
        <?php
            // 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放、使用时解密),确保安全;
            // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。
            $pwd =getenv('EXAMPLE_PASSWORD_ENV');
            $redis_host = "192.xx.xx.xx";  //此处为步骤1获取到的负载均衡地址
            $redis_port = 8635;
            $user_pwd = pwd;
            $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("key", "php test ok!") == false) {
                die($redis->getLastError());
            }
            $value = $redis->get("key");
            echo $value;
            $redis->close();
        ?>
      • 使用PHP集群SDK连接GeminiDB Redis集群
        <?php
                $redis_host = "192.xx.xx.xx";  //此处为步骤1获取到的负载均衡地址
                $redis_port = 8635;
                $user_pwd = "pwd";
                // Connect with read/write timeout as well as specify that phpredis should use
                // persistent connections to each node.
                $redis = new RedisCluster(NULL, Array("$redis_host:$redis_port"), 1.5, 1.5, true,  $user_pwd);
                if ($redis->set("key", "php test ok!") == false) {
                    die($redis->getLastError());
                }
                $value = $redis->get("key");
                echo $value;
                $redis->close();
            ?>
    2. 执行redis.php,确认结果正常。