handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用

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扩展

141609614.png

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();

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】TeeChart的用法

/// <summary> /// 获得数据集 /// </summary> /// <param name"sqlStr">传递查询语句</param> /// <returns>返回数据集</returns> public static DataSet GetDataSet(string sqlStr) { string conns…

java,jdk安装,配置环境变量,window10系统

1、找到我们要安装的jdk软件&#xff0c;软件下载我就不介绍了&#xff0c;jdk下载连接地址 然后安装&#xff0c;一直点下一步就可以了&#xff0c;这里不建议跟换软件目录&#xff0c;毕竟第一次用&#xff0c;出了什么错就不好弄了&#xff0c;注&#xff1a;记得软件的安装…

solr mysql数据注入_(solr系列:四)将mysql数据库中的数据导入到solr中

在前面的博文中&#xff0c;已完成了在tomcat中对solr的部署&#xff0c;为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的mysql的数据导入到solr中呢&#xff1f;准备工作&#xff1a;1、mysql数据源&#xff1a;myuser库中的user表(8条数据)/*Navicat M…

40种Javascript中常用的使用小技巧【转】

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键< table border οncοntextmenureturn(false)>< td>no< /table> 可用于Table 2. < body onselectstart"return false"> 取消选取、防止复制 3. οnpaste&q…

超链接去下划线

在a标签里加上 style"text-decoration: none

Silverlight学习笔记(三):创建第一个Silverlight应用程序

在开始创建程序之前&#xff0c;还是要提一下关于Silverlight开发环境搭建的问题。如果使用VS2010&#xff0c;这可以搭建Silverlight4的开发环境。我推荐大家看这篇由大牛jv9撰写的【轻松建立Silverlight 4开发环境】。 我使用的是VS2008&#xff0c;所以要搭建的是Silverlig…

按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...

地铁紧急停车按钮图片来自网络位置&#xff1a;站台两侧墙壁上&#xff0c;靠近列车车头、车尾两侧。外观&#xff1a;上锁的红色四方小盒子&#xff0c;按钮为红色&#xff0c;旁边写有“紧急停车按钮”等字样。使用&#xff1a;紧急时刻击碎中间玻璃&#xff0c;按压按钮。红…

java中的局部变量、成员变量、类变量

局部变量&#xff1a;在方法、构造函数或者语句块中定义的变量被称为局部变量。 特点&#xff1a;变量的声明和初始化都是在方法中&#xff0c;方法结束后&#xff0c;变量就会自动销毁。 例&#xff1a;下面代码块的s2 成员变量&#xff1a;成员变量是定义在类中&#xff0c;…

根据F12在页面中调整div的大小

我们先随便写一个div大小&#xff0c;然后在chrome浏览器打开&#xff0c;显示效果&#xff1a; #logo{border: 1px solid black;width: 1300px;height: 50px;} .top{border: blue solid 1px;width: 420px;height: 50px;float: left;}<div id"logo"><div c…

头文件

1、头文件用于声明而不是用于定义 定义只可以出现一次&#xff0c;而声明可以出现多次。下列语句是一些定义&#xff0c;不应该放在头文件里&#xff1a; extern int ival 10; double fica_rate; 虽然ival声明为extern&#xff0c;但是它有初始化式&#xff0c;代表这条语句是…

删除了注册表winsock项及winsock2项怎么办

国庆节期间要值一天班&#xff0c;看看网站有没有什么问题&#xff0c;可是打开电脑去上不了网&#xff0c;于是在网上寻找答案&#xff0c;就这么着看到一个贴子&#xff0c;让删除注册表中的winsock及winsock2两项&#xff0c;哎&#xff0c;这一删可出大事了&#xff0c;网更…

mysql 数据库设计规范_MYSQL数据库设计规范与原则

MYSQL数据库设计规范1、数据库命名规范采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线_组成;命名简洁明确(长度不能超过30个字符);例如&#xff1a;user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀;除非是备份数据库可以加0-9的自然…

The security settings could not be applied to the database because the connection has failed安装Mysql

安装msql出现这个问题&#xff0c;&#xff0c;百度了好久才解决了问题&#xff0c;说一下怎么解决的吧 把以前安装的Mysql删除打开C盘&#xff0c;点击查看&#xff0c;然后点击隐藏的项目&#xff0c;这时候目录会出现ProgramData文件&#xff0c;然后点击这个文件&#xff…

怎么给div加背景图片

<div style"background: url(img/news images/News-flash_01_02.png);height: 306px;width: 1300px;">注意&#xff1a;url的路径一定要加’

python多个进度条_多个芹菜进度条

问题我有一个Django站点&#xff0c;使用celeriRabbitMQ作为长时间运行任务的任务队列。我把结果存储在Redis中。我已经能够使用Celery的update_state在引导进度条中显示一个任务的进度&#xff0c;并通过一个按钮向Redis DB发送ajax post来检索当前状态。在理想情况下&#xf…

微软Silverlight,你应该知道的10件事

笔者使用Silverlight的时间比较长&#xff0c;一直在研究这个微软号称“Flash杀手”的工具。根据几个月的第一手体验&#xff0c;对它的技术方面的精华进行了总结。 随着Siverlight公众版的发布时间的日益接近&#xff0c;现在是时候来熟悉Silverlight以及其如何影响你的We…

Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)

拷贝jar包 找到我们的hibernate安装包&#xff0c;在lib目录下找到optional目录&#xff0c;打开c3p0文件&#xff0c;拷贝里面的jar包到eclipse里 写一个测试类&#xff0c;代码入下 public class C3P0Test {Testpublic void test() {Session s HabernateUtils.openSessi…

workerman json mysql_workerman-json-rpc

软件简介一款使用PHP开发的高性能Json Rpc框架&#xff0c;框架使用TCP/IP协议直接传输json数据&#xff0c;系统集成统计监控模块&#xff0c;开发部署维护非常简。workerman-json-rpc 包含了服务端和客户端。特性&#xff1a;使用PHP开发&#xff0c;与PHP紧密结合PHP 多进程…

web站点性能测试经验点滴

对web站点性能测试&#xff0c;从测试工具的角度&#xff0c;介绍几点经验。 1、在执行客户端并发性能测试的过程中&#xff0c;需要同时监控数据库服务器、web服务器以及网络资源等使用情况&#xff0c;以便对系统的性能做全面评估。 2、录制的脚本需要编辑&#xff0c;有时需…

Hibernate的CURD操作

1、保存&#xff1a;Session的save方法 Testpublic void testSave() {Customer c new Customer();c.setCustName("测试");Session s HibernateUtils.openSession();Transaction t s.beginTransaction();s.save(c);t.commit();s.close();}2、查询&#xff1a;Sess…