2016年12月

编译mongodb扩展

编译mongodb需要安装openssl

yum -y install gcc;yum -y install gcc-c++;yum install php-devel;yum -y install openssl-devel;

1.首先下载php的mongodb扩展
从http://pecl.php.net/package/mongo这个网址下载mongodb的扩展源码包

wget http://pecl.php.net/get/mongo-1.4.5.tgz

2.解压安装包

tar zxf mongo-1.4.5.tgz

3.进入解压目录,运行phpize进行安装准备

cd mongo-1.4.5
phpize

4.安装编译
上述命令运行完后,在目录下就生成了configure文件
使用./configure命令进行安装配置,然后使用make && make install进行编译安装,命令如下:

./configure
make && make install

5.编辑php.ini增加下述一行添加mongodb扩展

extension="mongo.so"

6.重启服务

service nginx restart
service php-fpm restart

判断是否安装成功

php -m | grep redis

编译安装php(redis)模块

首先
1.安装编译工具 因为有些服务器会缺少这些工具

yum -y install gcc;yum -y install gcc-c++;yum install php-devel;

2.下载:

cd /usr/local/src
wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz

3.解压 进入安装目录

tar zxvf phpredis-2.2.4.tar.gz
cd phpredis-2.2.4

4.用phpize生成configure配置文件

phpize
./configure
make  
make install

安装完成之后,出现下面的安装路径

/usr/lib64/php/modules/

2、配置php支持 #编辑配置文件

vi /etc/php.ini

在最后一行添加以下内容添加 #保存退出

extension="redis.so"  
:x

3.重启服务

service nginx restart 
service php-fpm restart

判断是否安装成功

php -m | grep redis

redis怎么实现数据库的缓存

 对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。
但是往往又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。
所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache。而这种需求目前还没有看到有特别成熟的解决方案或工具,因此采用Gearman+PHP+MySQL UDF的组合异步实现MySQL到Redis的数据复制。
MySQL到Redis数据复制方案
无论MySQL还是Redis,自身都带有数据同步的机制,比较常用的MySQL的Master/Slave模式,就是由Slave端分析Master的binlog来实现的,这样的数据复制其实还是一个异步过程,只不过当服务器都在同一内网时,异步的延迟几乎可以忽略。
那么理论上也可以用同样方式,分析MySQL的binlog文件并将数据插入Redis。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的。
因此这里选择了一种开发成本更加低廉的方式,借用已经比较成熟的MySQL UDF,将MySQL数据首先放入Gearman中,然后通过一个自己编写的PHP Gearman Worker,将数据同步到Redis。比分析binlog的方式增加了不少流程,但是实现成本更低,更容易操作。