phpredis -- Redis编译安装,PHP 7 安装 Redis 扩展
admin
2023-06-12 05:21:38
0

安装 Redis Server

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

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

下载redis

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 就安装好了。


配置环境变量

cat > /etc/profile.d/redis.sh << EOF
export  REDIS_HOME=/usr/local/redis
export PATH=\$PATH:\$REDIS_HOME/bin'
EOF
. /etc/profile


配置 redis.conf

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
//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的服务脚本

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
#!/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的分支

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

我们查看下代码分支结构

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

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

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

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

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



2.开始编译phpredis扩展

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 库文件是否存在

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

修改php.ini配置文件

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

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

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


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

php tests/TestRedis.php --class Redis

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

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

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

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


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


5. phpredis 基本用法

测试连接

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


列表操作

 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));
?>
redis is connected!
["book","redis_item2","redis_item1","cup"]


字符串操作

 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");
?>
redis is connected!
world


获取redis中所有键

 connect("127.0.0.1", 6379) ? "redis is connected!\n" : "redis connect fail\n");
    print_r($redis -> keys("*"));
?>
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
)


上一篇:phpstorm基本配置

下一篇:php的基础知识

相关内容

热门资讯

国家两部门:开展矿山机器人应用... 国家矿山安全监察局综合司 工业和信息化部办公厅关于开展矿山机器人应用验证试点工作的通知 国家矿山安全...
打造“终身学习之城”,杭州积极... 潮新闻客户端 记者 徐婷 俞刘东 通讯员 许慧敏 人工智能时代日新月异,培养适应时代生存发展的人才,...
荣耀平板20问世 内置1010... 【CNMO科技消息】5月25日晚间,CNMO科技注意到,荣耀平板20已正式发布,新品首销价1899元...
华为芯片破局!五年干到1.4n... 说起何庭波这个名字,想必各位IT之家家友是既熟悉又陌生。 熟悉在于她坐拥华为公司董事、半导体业务部总...
美加州故障化学品储罐爆炸风险排... 新华社洛杉矶5月25日电(记者高山 谭晶晶)美国加利福尼亚州奥兰治县官员25日说,当地此前发生泄漏的...
雷军:小米汽车电池安全测试项目... 来源:环球网 【环球网科技综合报道】5月25日消息,小米创办人、董事长兼 CEO 雷军发布了小米汽...
2026续航“顶级”的全能旗舰... 要说近两年手机行业感知最强的技术进步,电池肯定算一个,毕竟今年连影像旗舰和小屏机都能把电池堆到700...
在德国失联的23岁中国留学生,... 近日,有网友发帖称,一名23岁中国男留学生在德国失联数日,其家属正在紧急寻人,引发关注。据极目新闻报...
美光HBM4增产进展顺利,HB... IT之家 5 月 25 日消息,据韩媒 The Elec 今日报道,美光科技第六代高带宽内存 HBM...
AIROBO正式发布“冲刺全球... 全球机器人产业,正在经历一次比“智能手机时代”更深层的产业迁移。 过去十年,机器人行业的竞争核心始终...