通过PHP连接实例
本章节主要介绍使用PHP访问GeminiDB Redis实例的方法。
前提条件
- 已成功创建GeminiDB Redis实例,且实例状态为“正常”。
- 已创建弹性云服务器,创建弹性云服务器的方法,请参见《弹性云服务器快速入门》中“购买弹性云服务器”章节。
- 弹性云服务器上已经安装GCC等编译工具。
- 创建的弹性云服务器与GeminiDB Redis实例要保证区域、可用区、VPC和安全组一致。
操作步骤
- 获取GeminiDB Redis实例的负载均衡地址和端口。
- 负载均衡地址的查看方法请参见查看负载均衡地址及端口。
- 端口信息的获取方法请参见查看实例节点端口。
- 登录弹性云服务器,具体操作请参见《弹性云服务器快速入门》中“登录弹性云服务器”。
- 安装PHP开发包与命令行工具。
执行如下命令,使用yum方式直接安装。
yum install php-devel php-common php-cli
以CentOS(redhat系列)为例,如果是Ubuntu(debian系列),则需要使用其对应的安装命令。
- 安装完后可查看版本号,确认成功安装。
php --version
- 安装Redis的PHP客户端。
- 下载phpredis源文件。
wget http://pecl.php.net/get/redis-4.1.0RC3.tgz
以上是当前最新版本,也可以通过PHP官网下载其他版本的phpredis客户端。
- 解压phpredis源文件包。
cd redis-4.1.0RC3
- 编译前先执行扩展命令。
- 配置php-config文件。
./configure --with-php-config=/usr/bin/php-config
不同的操作系统,安装PHP的方式不同,该配置文件位置可能不同。建议在配置前,先确认该文件的目录,命令如下:find / -name php.ini。
- 编译和安装phpredis客户端。
- 安装完后在php.ini文件中增加extension配置项,用于增加redis模块的引用配置。
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
- 保存退出后确认扩展生效。
如果以上命令返回了redis,表示php redis客户端环境搭建好了。
- 下载phpredis源文件。
- 使用phpredis客户端连接GeminiDB Redis实例。
- 编写测试代码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(); ?>
- 使用PHP单机SDK连接GeminiDB Redis集群
- 执行redis.php,确认结果正常。
- 编写测试代码redis.php。