HandlerSocket简介

HandlerSocket是针对Mysql的一个NoSQL插件,它作为一个守护进程工作在mysqld进程里面,接收tcp连接,并处理来自客户端的请求。HandlerSocket不支持SQL查询,作为替代,它支持表的简单的CRUD操作。

由于下面的原因,在某些情况下HandlerSocket比mysqld/libmysql对儿更快速:

-HandlerSocket 处理数据不需要解析SQL,由于这个原因使得其占用少量CPU资源。

-HandlerSocket 从客户端批量读取多个请求并处理他们,这使得其占用更少的CPU和磁盘使用率。

-HandlerSocket 客户端/服务器协议比mysql/libmysql对儿更简洁,这使得其占用更少的网络使用率。

Mysql版本需要5.1及以上,mysql的安装就不写了

一、服务器端安装、配置、及测试

1、下载

[root@vm3 ~]# git clone http://github.com/DeNADev/HandlerSocket-Plugin-for-MySQL.git或

[root@vm3 ~]# wget -O HandlerSocket-Plugin-for-MySQL.zip --no-check-certificate https://github.com/DeNADev/HandlerSocket-Plugin-for-MySQL/archive/master.zip2、安装

[root@vm3 ~]# cd HandlerSocket-Plugin-for-MySQL-master/

[root@vm3 HandlerSocket-Plugin-for-MySQL-master]# ./autogen.sh

[root@vm3 HandlerSocket-Plugin-for-MySQL-master]# ./configure --with-mysql-source=../mysql-5.1.62 --with-mysql-bindir=/usr/local/mysql/bin --with-mysql-plugindir=/usr/local/mysql/lib/mysql/plugin/

[root@vm3 HandlerSocket-Plugin-for-MySQL-master]# make

[root@vm3 HandlerSocket-Plugin-for-MySQL-master]# make install

3、配置

以root身份登录到mysql,用下面命令安装handlersocket插件

mysql> install plugin handlersocket soname 'handlersocket.so';

Query OK, 0 rows affected (0.00 sec)

mysql> show plugins;

| handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD |编辑my.cnf文件,在[mysqld]段下加入下列配置项

loose_handlersocket_port    = 9998

loose_handlersocket_port_wr    = 9999

loose_handlersocket_threads    = 4

loose_handlersocket_threads_wr  = 1

loose_handlersocket_address    = 192.168.18.240重启mysql服务

[root@vm3 ~]# service mysqld restart

4、验证部署

查看handlersocket线程

mysql> show processlist;

|3| system user|connecting host|NULL|Connect|NULL|handlersocket:mode=rd,0 conns,0 active|NULL|

|4| system user|connecting host|NULL|Connect|NULL|handlersocket:mode=rd,0 conns,0 active|NULL|

|5| system user|connecting host|NULL|Connect|NULL|handlersocket:mode=rd,0 conns,0 active|NULL|

|6| system user|connecting host|handlersocket|Connect|NULL|handlersocket:mode=wr,0 conns,0 active|NULL|

|7| system user|connecting host|NULL|Connect|NULL|handlersocket:mode=rd,0 conns,0 active|NULL|查看监听端口

[root@vm3 ~]# netstat -ntupl

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local AddressForeign AddressStatePID/Program name

tcp000.0.0.0:33060.0.0.0:*LISTEN 5522/mysqld

tcp00192.168.18.240:99980.0.0.0:*LISTEN 5522/mysqld

tcp00192.168.18.240:99990.0.0.0:*LISTEN 5522/mysqld

至此服务器端部署完毕,下面部署客户端,客户端使用PHP程序语言

二、客户端安装、配置、测试

1、下载

[root@vm4 ~]# wget    http://php-handlersocket.googlecode.com/files/php-handlersocket-0.2.0.tar.gz

这里使用的不是最新的0.3.1版本,而是老的0.2.0,版本,新版本安装时报错,如有兄弟成功安装,请告知,3ks

2、安装

[root@vm4 ~]# tar zxvf php-handlersocket-0.2.0.tar.gz

[root@vm4 ~]# cd php-handlersocket/

[root@vm4 php-handlersocket]# phpize

[root@vm4 php-handlersocket]# ./configure --with-php-config=/usr/bin/php-config

[root@vm4 php-handlersocket]# make

[root@vm4 php-handlersocket]# make install

3、配置

本例使用的是rpm安装的php,编辑/etc/php.ini,添加或修改如下行

extension_dir = "/usr/lib64/php/modules"

extension=handlersocket.so

4、验证

重启httpd服务

[root@vm4 handlersocket]# service httpd restart编写phpinfo.php

[root@vm4 html]# vim /var/www/html/phpinfo.php

phpinfo();访问页面,看看是否加载了handlersocket扩展

ok,扩展已经启用了

5、测试

使用下面代码测试

$host = '192.168.18.240';

$port = 9998;

$port_wr = 9999;

$dbname = 'hstestdb';

$table = 'hstesttbl';

//GET

$hs = new HandlerSocket($host, $port);

if (!($hs->openIndex(1, $dbname, $table, HandlerSocket::PRIMARY, 'k,v')))

{

echo $hs->getError(), PHP_EOL;

die();

}

$retval = $hs->executeSingle(1, '=', array('k1'), 1, 0);

var_dump($retval);

$retval = $hs->executeMulti(

array(array(1, '=', array('k1'), 1, 0),

array(1, '=', array('k2'), 1, 0)));

var_dump($retval);

unset($hs);

//UPDATE

$hs = new HandlerSocket($host, $port_wr);

if (!($hs->openIndex(2, $dbname, $table, '', 'v')))

{

echo $hs->getError(), PHP_EOL;

die();

}

if ($hs->executeUpdate(2, '=', array('k1'), array('V1'), 1, 0) === false)

{

echo $hs->getError(), PHP_EOL;

die();

}

unset($hs);

//INSERT

$hs = new HandlerSocket($host, $port_wr);

if (!($hs->openIndex(3, $dbname, $table, '', 'k,v')))

{

echo $hs->getError(), PHP_EOL;

die();

}

if ($hs->executeInsert(3, array('k2', 'v2')) === false)

{

echo $hs->getError(), PHP_EOL;

}

if ($hs->executeInsert(3, array('k3', 'v3')) === false)

{

echo 'A', $hs->getError(), PHP_EOL;

}

if ($hs->executeInsert(3, array('k4', 'v4')) === false)

{

echo 'B', $hs->getError(), PHP_EOL;

}

unset($hs);

//DELETE

$hs = new HandlerSocket($host, $port_wr);

if (!($hs->openIndex(4, $dbname, $table, '', '')))

{

echo $hs->getError(), PHP_EOL;

die();

}

if ($hs->executeDelete(4, '=', array('k2')) === false)

{

echo $hs->getError(), PHP_EOL;

die();

}至此客户端也部署完毕了,性能和具体应用有待测试!

handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用相关推荐

  1. linux 火狐安装java插件_Linux下Firefox安装配置JDK插件

    在Linux下安装了firefox浏览器,版本是2.0.0.20.登录Oracle EBS后打开form,提示要装JDK1.4.2_04,手工安装完之后,PATH也已经设置好了.为什么firefox还 ...

  2. zotero翻译插件PDF Translate下载安装配置

    目录 1.zotero pdf translate 2.插件下载 3.插件安装 4.使用 1.zotero pdf translate 作为zotero的附带组件之一,pdf translate插件可 ...

  3. 【图文详细教程】maven3安装配置+eclipse离线安装maven3插件《《唯一成功的教程~~~2018-01-09》》...

    环境搭建前提: 1.电脑上已经安装了1.7以及以上版本的JDK(因为我提供的maven版本是最新的3.3.9的,要求最低JDK1.7) 2.配置好了ecplise并且能正常启动 第一步:下载maven ...

  4. jenkins的安装配置,插件配置,安装插件,配置maven,jdk路径,配置安装插件,项目配置,自动构建配置

    1.下载jenkins,下载地址: https://jenkins.io/ 2.运行命令,启动jenkins 将jenkins上传到:/home/tuzq/software 安装JDK,maven ( ...

  5. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

     使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...

  6. sublime python插件_sublime text 3 + python配置,完整搭建及常用插件安装

    四年的时间,一直使用EmEditor编辑器进行Python开发,之前是做面向过程,只需要将一个单独的py文件维护好即可,用着也挺顺手,但是最近在做面向对象的开发,不同的py文件中相互关联较多,感觉单纯 ...

  7. IDEA中安装配置Jrebel热部署插件用法笔记

    今天给大家介绍一下IDEA中安装配置Jrebel热部署插件用法,希望对大家能有所帮助! 1.Jrebel插件介绍 JRebel属于一款JAVA虚拟机插件,它可以让你的项目在不需要进行重新编译的情况下, ...

  8. vim win装_vim插件管理器的安装和配置-windows

    # vim插件管理器的安装和配置-windows ### 前言 ----------------------------- - vim做一框功能强大的编辑器,扩展功能令人称奇,插件机制非常灵活 - 本 ...

  9. 关于svn的安装配置开启服务过程和 eclipse安装SVN插件的方法

    eclipse安装SVN插件的方法链接:https://www.cnblogs.com/alamps/p/6155963.html svn的安装配置开启服务相关过程: 安装一直下一步cmd中:echo ...

  10. Jenkins——持续集成及Jenkins介绍和安装配置(插件,用户权限,凭据,Maven安装打包,配置tomcat用户权限)

    持续集成及Jenkins介绍和安装配置 持续集成及Jenkins介绍 软件开发生命周期 持续集成 持续集成的组成要素 持续集成的好处 Jenkins介绍 Jenkins安装和持续集成环境配置 Gitl ...

最新文章

  1. Data-truncation--Incorrect-string-value
  2. CentOS6.9编译安装Nginx1.12
  3. java学习笔记1--开发环境平台总结
  4. @EnableTransactionManagement
  5. 【开源社区】如何参与JEECG开源团队?
  6. 手把手教你在eclipse 中 配置maven
  7. java编译成exe_java编译成exe
  8. 10658830让你的手机会唱歌
  9. Mac安装双系统后无法切回mac系统
  10. i3 10105f对比i5 10400f选哪个好
  11. MySQL 根据身份证查找年龄段
  12. 华为5500网络限流配置_华为USG5500统一安全网关
  13. JS判断是PC端还是WAP端
  14. NG-ALAIN的使用
  15. Python 里最强的地图绘制神器
  16. JS基本类型与无法定义的属性
  17. Windows安装MongoDB,无法启动服务
  18. Spring是如何通过IOC来创建对象的?一文足矣
  19. PHP+正则抓取淘宝装修市场设计师数据
  20. python接口自动化测试代码_python接口自动化测试二:python代码实现接口测试

热门文章

  1. base64原理+base64隐写
  2. Android系统模块编译Makefile编写规则
  3. Java代码混淆工具:JavaObfuscator介绍
  4. 棋牌游戏服务器架构设计
  5. 在线教育平台架构设计-数据库设计1期
  6. win11开机占用率过高怎么办?win11开机内存占用90%
  7. 无线收发模块——NRF24L01
  8. cmd - 批量重命名文件
  9. gps高斯utm_UTM坐标系统与高斯
  10. js+html空间数据编码问题--以姓名为例(代码设涉及文件读取,文本数字提取,特别是文本x,y坐标的提取)