phpredis -- Redis编译安装,PHP 7 安装 Redis 扩展

安装 Redis Server

redis的官方网站是:http://redis.io/ 

目前的最新稳定版是 3.2版。

下载redis

1
2
3
4
wget http: //download .redis.io /releases/redis-3 .2.3. tar .gz
tar  xf redis-3.2.3. tar .gz
cd  redis-3.2.3
make  PREFIX= /usr/local/redis  install

没有报错的话,redis 就安装好了。


配置环境变量

1
2
3
4
5
cat  /etc/profile .d /redis .sh << EOF
export   REDIS_HOME= /usr/local/redis
export  PATH=\$PATH:\$REDIS_HOME /bin '
EOF
/etc/profile


配置 redis.conf

1
2
3
4
5
6
cd  redis-3.2.3
//  进入redis 源码包目录
mkdir  /usr/local/redis/etc/
cp  redis.conf   /usr/local/redis/etc/
cd  /usr/local/redis/etc/
vim redis.conf
1
2
3
4
5
6
7
8
//redis .conf
daemonize  yes
pidfile  /var/run/redis/redis .pid
port 6379
tcp-backlog 128     //  tcp队列长度,默认为512,CentOS系统默认为128,此值不应该大于操作系统的该值
logfile  "/var/log/redis/redis.log"
dir  /var/redisdb     //  redis数据存储目录
//  其他参数目前就不需要了


配置redis的服务脚本

扫描二维码关注公众号,回复: 1684854 查看本文章
1
2
3
4
5
6
7
useradd  -r -s  /sbin/nologin  -M redis
mkdir  /var/run/redis
mkdir  /var/log/redis
mkdir  /var/redisdb
chown  redis:redis  /var/run/redis
chown  redis:redis  /var/log/redis
chown  redis:redis  /var/redisdb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/sh
#
# chkconfig:   35 84 16 
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
 
/etc/rc .d /init .d /functions
/etc/sysconfig/network
 
"$NETWORKING"  "no"  ] &&  exit  0
 
BASEDIR= /usr/local/redis
EXEC=$BASEDIR /bin/redis-server
CLIEXEC=$BASEDIR /bin/redis-cli
REDIS_USER=redis
 
PIDFILE= /var/run/redis/redis .pid
CONF_PATH= "$BASEDIR/etc/redis.conf"
REDISPORT=$( grep  -P  "^port\b.*$"  $CONF_PATH |  awk  '{print $2}' )
 
function  start() {
     if  [ -f $PIDFILE ]                                                   
     then                                                                 
             echo  "$PIDFILE exists, process is already running or crashed"
     else                                                                 
             echo  -n  "Starting `basename $EXEC` ."                           
             daemon --user=$REDIS_USER --pidfile=$PIDFILE $EXEC $CONF_PATH
         while  [ ! -d  /proc/ $( cat  $PIDFILE 2>  /dev/null ) ]
         do
             sleep  1
             echo  -n  "."
         done
             echo                                                         
     fi                                                                   
}
function  stop() {
     if  [ ! -f $PIDFILE ]                                          
     then                                                          
             echo  -n  "$PIDFILE does not exist, prog not running"
         echo_failure
         echo  sleep  1
         return  1
     else                                                          
             #$CLIEXEC -p $REDISPORT shutdown                       
             echo  -n  "Stopping `basename $EXEC` .."
                 killproc -p $PIDFILE $EXEC -TERM
             while  [ -f $PIDFILE ]
             do
                 sleep  1
             done    
         echo                                              
     fi                                                            
}
 
case  "$1"  in
     start)
     start
         ;;
     stop)
         stop
         ;;
     status)
         status -p $PIDFILE $EXEC
         ;;
     restart)
         stop
         start
         ;;
     *)
         echo  "Please use start or stop as first argument"
         ;;
esac




前提是已经安装好 Redis 和 PHP7 了。


  1. 下载phpredis 

phpredis项目的GitHub页面是 https://github.com/phpredis/phpredis 

但是有个问题,php7 的redis扩展项目和php5的redis扩展项目代码并不通用,所以在phpredis项目下有个新的支持php7版本的分支,但是你默认clone的项目是停留在原版php5的项目中的,所以需要手动检出到php7的分支

1
2
3
git clone https: //github .com /phpredis/phpredis .git
// 将远程项目代码克隆到本地
cd  phpredis

我们查看下代码分支结构

wKiom1fTkGbwIKuRAABgkaz4NU4898.png-wh_50

可以看到远程分支上有一个 php7 的分支,这个就是单独支持PHP 7的phpredis扩展

1
2
3
4
git checkout -b php7  origin /php7
// 我们本地创建php7分支,其实节点为远程的php7分支
git branch
// 这就可以看到我们目前处在新创建的 php7 分支上

wKioL1fTkS2i0yf_AAANPpjp-uY957.png

ps:如果有人对命令提示符上面的[>php7] 分支提示感兴趣的话,可以浏览我之前的文章:个性定制你的 Git 命令行提示符 http://professor.blog.51cto.com/996189/1737500    



2.开始编译phpredis扩展

1
2
3
4
5
6
7
phpize
// 检查php扩展
. /configure  --with-php-config= /usr/local/php7/bin/php-config
// 我这里是编译安装的PHP 7 所以需要手动指定php-config的路径
// 如果你需要开启igbinary序列化支持的话,需要加上参数 -- enable -redis-igbinary
make
make  install



3.安装配置phpredis扩展

检查redis.so 库文件是否存在

wKiom1fTln3iGB25AAAhUoqf5HU766.png

修改php.ini配置文件

1
2
3
4
5
6
vim   /usr/local/php7/lib/php .ini
extention= "redis.so"
// 添加这一行扩展配置
php -a
>phpinfo();
// 检查是否有redis的相关信息

wKiom1fTmLSysH4dAAAHbalGxWs940.png

1
2
service php-fpm restart
// 重启php-fpm服务


4.测试扩展库是否正常运行

1
php tests /TestRedis .php --class Redis

wKioL1fTtyHS6ASgAAEldOhUqRE325.gif

1
  php tests /TestRedis .php --class Redis -- test  echo

wKioL1fTqi-A2lTMAAAZ0p373w0762.png

正常情况下,应该是如图的反馈信息。


到此,phpredis 就安装完成了,所以最关键的一步就是 PHP 7 安装redis扩展库是需要在本地切换分支节点的。


5. phpredis 基本用法

测试连接

1
2
3
4
5
php > $redis = new Redis();
php >  echo  ($redis -> connect( "127.0.0.1" , 6379) ?  "redis is connected!"  "redis connect fail" );
redis is connected!
php >  echo  "redis response:"  . $redis ->  ping ();
redis response:+PONG


列表操作

1
2
3
4
5
6
7
8
9
10
<?php
     $redis  new  Redis();
     echo  ( $redis  -> connect( "127.0.0.1" , 6379) ?  "redis is connected!\n"  "redis connect fail\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 ));
?>
1
2
redis is connected!
[ "book" , "redis_item2" , "redis_item1" , "cup" ]


字符串操作

1
2
3
4
5
6
7
8
9
10
<?php
     $redis  new  Redis();
     echo  ( $redis  -> pconnect( "127.0.0.1" , 6379) ?  "redis is connected!\n"  "redis connect fail\n" );
     // pconnect长连接
     $redis  -> set( "hello" "world" );
     echo  $redis  -> get( "hello" );
 
     $redis  -> del( "hello" );
     echo  $redis  -> get( "hello" );
?>
1
2
redis is connected!
world


获取redis中所有键

1
2
3
4
5
<?php
     $redis  new  Redis();
     echo  ( $redis  -> connect( "127.0.0.1" , 6379) ?  "redis is connected!\n"  "redis connect fail\n" );
     print_r( $redis  -> keys( "*" ));
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
redis is connected!
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
)

猜你喜欢

转载自blog.csdn.net/lemontree1945/article/details/80708501