前段时间偶然的机会了解到Handlersocket,并在自己的一个demo中得以应用,在此做下总结。
一、HandlerSocket是什么?
HandlerSocket是akira higuchi 写的一个MySql的插件。以MySQL Daemon Plugin的形式提供类似NoSQL的网络服务,通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。
二、安装配置
1. 安装
由于HandlerSocket是基于MySQL数据库的,因此在安装HanderSocket前需要先按照常规方式部署MySQL服务,同时需注意HandlerSocket时需要MySQL的源码,因此还需要MySQL源码编译方式安装。
其中:
--with-mysql-source:指定MySQL源码所在目录
--with-mysql-bindir:指定mysql_config所在目录
--with-mysql-plugindir:指定MySQL插件的存储路径
执行make编译安装:
#make && make install
完成后,mysql-plugindir目录下应有handlersocket相关文件
2. 配置
启动MySQL服务,在MySQL中安装HandlerSocket插件:
至此,HandlerSocket插件安装完毕。
三、PHP应用
HandlerSocket的缺陷:
(1)写操作并没有淘汰查询缓存——如果执行了写操作通过HandlerSocket,由于没有失效查询缓存, 那么你可能从MySQL读到旧的数据;
(2)不支持自动递增——插入时无法从自增列上自动获得增量值。
鉴于以上问题,扬长避短,使用其合并查询操作,发挥其NoSQL性能获取MySQL的InnoDB类型表数据,具体操作如下:
参考文档:
https://code.google.com/p/php-handlersocket/
http://www.5ienet.com/note/html/handlersocket/mysql_nosql_handlersocket_configure.shtml