安装 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的服务脚本
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 了。
下载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
|
我们查看下代码分支结构
可以看到远程分支上有一个 php7 的分支,这个就是单独支持PHP 7的phpredis扩展
1
2
3
4
|
git checkout -b php7 origin
/php7
//
我们本地创建php7分支,其实节点为远程的php7分支
git branch
//
这就可以看到我们目前处在新创建的 php7 分支上
|
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 库文件是否存在
修改php.ini配置文件
1
2
3
4
5
6
|
vim
/usr/local/php7/lib/php
.ini
extention=
"redis.so"
//
添加这一行扩展配置
php -a
>phpinfo();
//
检查是否有redis的相关信息
|
1
2
|
service php-fpm restart
//
重启php-fpm服务
|
4.测试扩展库是否正常运行
1
|
php tests
/TestRedis
.php --class Redis
|
1
|
php tests
/TestRedis
.php --class Redis --
test
echo
|
正常情况下,应该是如图的反馈信息。
到此,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
)
|