phpredis -- Redis编译安装,PHP 7 安装 Redis 扩展
安装 Redis Server
redis的官方网站是:http://redis.io/
目前的最新稳定版是 3.2版。
下载redis
wgethttp://download.redis.io/releases/redis-3.2.3.tar.gztarxfredis-3.2.3.tar.gzcdredis-3.2.3makePREFIX=/usr/local/redisinstall
没有报错的话,redis 就安装好了。
配置环境变量
cat>/etc/profile.d/redis.sh<<EOFexportREDIS_HOME=/usr/local/redisexportPATH=\$PATH:\$REDIS_HOME/bin'EOF./etc/profile
配置 redis.conf
cdredis-3.2.3//进入redis源码包目录mkdir/usr/local/redis/etc/cpredis.conf/usr/local/redis/etc/cd/usr/local/redis/etc/vimredis.conf
//redis.confdaemonizeyespidfile/var/run/redis/redis.pidport6379tcp-backlog128//tcp队列长度,默认为512,CentOS系统默认为128,此值不应该大于操作系统的该值logfile"/var/log/redis/redis.log"dir/var/redisdb//redis数据存储目录//其他参数目前就不需要了
配置redis的服务脚本
useradd-r-s/sbin/nologin-Mredismkdir/var/run/redismkdir/var/log/redismkdir/var/redisdbchownredis:redis/var/run/redischownredis:redis/var/log/redischownredis:redis/var/redisdb
#!/bin/sh##chkconfig:358416#SimpleRedisinit.dscriptconceivedtoworkonLinuxsystems#asitdoesuseofthe/procfilesystem../etc/rc.d/init.d/functions./etc/sysconfig/network["$NETWORKING"="no"]&&exit0BASEDIR=/usr/local/redisEXEC=$BASEDIR/bin/redis-serverCLIEXEC=$BASEDIR/bin/redis-cliREDIS_USER=redisPIDFILE=/var/run/redis/redis.pidCONF_PATH="$BASEDIR/etc/redis.conf"REDISPORT=$(grep-P"^port\b.*$"$CONF_PATH|awk'{print$2}')functionstart(){if[-f$PIDFILE]thenecho"$PIDFILEexists,processisalreadyrunningorcrashed"elseecho-n"Starting`basename$EXEC`."daemon--user=$REDIS_USER--pidfile=$PIDFILE$EXEC$CONF_PATHwhile[!-d/proc/$(cat$PIDFILE2>/dev/null)]dosleep1echo-n"."doneechofi}functionstop(){if[!-f$PIDFILE]thenecho-n"$PIDFILEdoesnotexist,prognotrunning"echo_failureecho;sleep1return1else#$CLIEXEC-p$REDISPORTshutdownecho-n"Stopping`basename$EXEC`.."killproc-p$PIDFILE$EXEC-TERMwhile[-f$PIDFILE]dosleep1doneechofi}case"$1"instart)start;;stop)stop;;status)status-p$PIDFILE$EXEC;;restart)stopstart;;*)echo"Pleaseusestartorstopasfirstargument";;esac
前提是已经安装好 Redis 和 PHP7 了。
下载phpredis
phpredis项目的GitHub页面是https://github.com/phpredis/phpredis
但是有个问题,php7 的redis扩展项目和php5的redis扩展项目代码并不通用,所以在phpredis项目下有个新的支持php7版本的分支,但是你默认clone的项目是停留在原版php5的项目中的,所以需要手动检出到php7的分支
gitclonehttps://github.com/phpredis/phpredis.git//将远程项目代码克隆到本地cdphpredis
我们查看下代码分支结构
可以看到远程分支上有一个 php7 的分支,这个就是单独支持PHP 7的phpredis扩展
gitcheckout-bphp7origin/php7//我们本地创建php7分支,其实节点为远程的php7分支gitbranch//这就可以看到我们目前处在新创建的php7分支上
ps:如果有人对命令提示符上面的[>php7] 分支提示感兴趣的话,可以浏览我之前的文章:个性定制你的 Git 命令行提示符http://professor.blog.51cto.com/996189/1737500
2.开始编译phpredis扩展
phpize//检查php扩展./configure--with-php-config=/usr/local/php7/bin/php-config//我这里是编译安装的PHP7所以需要手动指定php-config的路径//如果你需要开启igbinary序列化支持的话,需要加上参数--enable-redis-igbinarymakemakeinstall
3.安装配置phpredis扩展
检查redis.so 库文件是否存在
修改php.ini配置文件
vim/usr/local/php7/lib/php.iniextention="redis.so"//添加这一行扩展配置php-a>phpinfo();//检查是否有redis的相关信息
servicephp-fpmrestart//重启php-fpm服务
4.测试扩展库是否正常运行
phptests/TestRedis.php--classRedis
phptests/TestRedis.php--classRedis--testecho
正常情况下,应该是如图的反馈信息。
到此,phpredis 就安装完成了,所以最关键的一步就是 PHP 7 安装redis扩展库是需要在本地切换分支节点的。
5. phpredis 基本用法
测试连接
php>$redis=newRedis();php>echo($redis->connect("127.0.0.1",6379)?"redisisconnected!":"redisconnectfail");redisisconnected!php>echo"redisresponse:".$redis->ping();redisresponse:+PONG
列表操作
<?php$redis=newRedis();echo($redis->connect("127.0.0.1",6379)?"redisisconnected!\n":"redisconnectfail\n");$redis->lpush("test_key","redis_item1");$redis->lpush("test_key","redis_item2");$redis->lpush("test_key","book");$redis->rpush("test_key","cup");$aList=$redis->lrange("test_key",0,-1);print(json_encode($aList));?>
redisisconnected!["book","redis_item2","redis_item1","cup"]
字符串操作
<?php$redis=newRedis();echo($redis->pconnect("127.0.0.1",6379)?"redisisconnected!\n":"redisconnectfail\n");//pconnect长连接$redis->set("hello","world");echo$redis->get("hello");$redis->del("hello");echo$redis->get("hello");?>
redisisconnected!world
获取redis中所有键
<?php$redis=newRedis();echo($redis->connect("127.0.0.1",6379)?"redisisconnected!\n":"redisconnectfail\n");print_r($redis->keys("*"));?>
redisisconnected!Array([0]=>test:{z}Inter[1]=>{list}lkey[2]=>{key}:9[3]=>{z}key1......[123]=>k[124]=>{s}DiffDest[125]=>wait-bar[126]=>test:k1)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。