CentOS6.3下源码安装redis
1.Redis简介
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操 作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的 是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
2,本次安装涉及从服务器配置
本机环境是CentOS6.3,192.168.1.188:6379
3.获取redis软件包
在redis的官方网站(http://www.redis.io)下载最新的稳定版本redis-2.6.4.tar.gz。
4.安装配置Redis主服务。
4.1用tar -zxvf解压软件包。
4.2用make && make install 编译安装Redis服务。
4.3创建Redis主配置文件目录,并复制redis.conf到该目录下面。
4.4编辑Redis主配置文件。
[root@Redis249 redis]# vim /etc/redis/redis.conf
#redis 以后台进程运行,默认为NO
daemonize yes
#如果已后台程序运行,则需要制定一个PID
pidfile /data/logs/redis/redis.pid
#redis服务绑定的主机IP
bind 192.168.1.249
#redis监听的端口,默认为6379
port 6379
#客户端连接超时时间,默认为300秒
timeout 600
#日志级别,分为debug,verbose(default),notice,waring
loglevel notice
#日志文件存放位置,默认为stdout
logfile /data/logs/redis/redis.log
#可用数据库数,默认为16
databases 16
#900秒内至少有一个key被改变
save 900 1
#300秒内至少有十个key被改变
save 300 10
#60秒内只要有一万个key被改变
save 60 10000
#存储到本地数据库是否压缩,默认为yes
rdbcompression yes
#本地数据库文件名,默认为dump.rdb
dbfilename yanzi_dump.rdb
#本地数据库存放路径
dir /data/redis/
#客户端最大连接数,默认不限制
maxclients 128
#是否每次日志更新操作后进行日志记录
appendonly yes
#更新日志文件名,默认为appendonly.aof
appendfilename yanzi_update.aof
#verysec表示每秒钟同步一次数据到磁盘(默认值)。
appendfsync everysec
#redis slave连接密码
#requirepass sfzhang
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
really-use-vm yes
#是否使用虚拟内存,默认为no
vm-enabled yes
#虚拟内存文件路径,默认值为/tmp/redis.swap
vm-swap-file /tmp/redis.swap
#默认值为零,所有的values存储在磁盘
vm-max-memory 0
#虚拟内存文件以块存储,每块32bytes
vm-page-size 32
#虚拟内存文件的最大数
vm-pages 134217728
#设置访问swap文件的线程数
vm-max-threads 4
#指定在超过一定数量或者最大元素超过某一临界时,采用一种特殊的哈希算法
hash-max-zipmap-entries 512
hash-max-zipmap-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
#是否重置Hash表
activerehashing yes
4.5启动Redis主服务,并设置开机自动重启。
4.5查看Redis端口是否监听。
5.安装配置Redis从服务器。
只需把主服务器/etc/redis/redis.conf配置文件复制到从服务器的/etc/redis/目录里面,把配置文件的bind地址修改成从服务器的IP地址,并添加下面两行即可。
由于此次安装没有涉及从服务器,所以该操作可以忽略
6.Redis 主从配置测试。
在Redis主服务器上面用redis-cli登陆服务器,用set命令给sfzhang赋值一串字符,可以用get命令获取该字符串的值。
在从服务器上面直接用get获取该字符串的值,如果没有报错且两者的值相同,说明Redis主从配置是OK的,其中的-a参数表示连接密码,密码为sfzhang。
由于此次安装没有涉及从服务器,所以该操作可以忽略
7.Redis PHP扩展phpredis的安装配置。
7.1获取phpredis软件包,在redis官方网站clients里面下载PHP扩展所需要的软件包(https://github.com/owlient/phpredis/downloads)phpredis-master.zip。
7.2安装配置phpredis。
[root@Redis249 software]# unzip phpredis-master.zip
[root@Redis249 software]# cd phpredis-master
[root@Redis249 software]#/usr/bin/phpize
[root@Redis249 software]#./configure -with-php-config=/usr/bin/php-config
[root@Redis249 software]#make && make install
7.3php.ini中添加extension=redis.so,任何重启PHP的php-fpm服务。
7.4编写PHP测试页,测试php和redis是否能协同工作。
7.5浏览器访问测试,如果出现I am sfzhang,I come from ningxia!!,说明PHP连接Redis 成功。
注:在安装phpredis时遇到报错,主要为如下情况,可根据如下叙述进行配置
因为此前在安装php时未加上参数--enable-fpm,所以没有启动fpm相关功能,故而重新编译安装了php,在原来参数的基础上增加了--enable-fpm参数,使得fpm生效
./configure --enable-fpm
安装成功后使用php-fpm命令无法启动php,提示
[13-Apr-2012 03:20:56] ERROR: failed to open configuration file '/usr/local/etc/php-fpm.conf': No such file or directory (2)
[13-Apr-2012 03:20:56] ERROR: failed to load configuration file '/usr/local/etc/php-fpm.conf'
[13-Apr-2012 03:20:56] ERROR: FPM initialization failed
在网上找了一下才发现原来要把/usr/local/etc/php-fpm.conf.default移动到/usr/local/etc/php-fpm.conf
将php-fpm设置为服务启动
[root@xiaoyu ~]# cd php-5.4.0/sapi/fpm/
[root@xiaoyu fpm]# ls
config.m4 init.d.php-fpm Makefile.frag php-fpm.8.in status.html
CREDITS init.d.php-fpm.in php-fpm php-fpm.conf status.html.in
fpm LICENSE php-fpm.8 php-fpm.conf.in
[root@xiaoyu fpm]# cp init.d.php-fpm /etc/init.d/php-fpm
然后chmod 755 /etc/init.d/php-fpm
/etc/init.d/php-fpm start
/sbin/chkconfig --add php-fpm (添加到开机服务列表)
/sbin/chkconfig php-fpm on
php-fpm的启动、停止和重启:
/etc/init.d/php-fpm start
/etc/init.d/php-fpm stop
/etc/init.d/php-fpm reload