memcache mysql 搭建_Memcache服务搭建

Memcache

Memcache的作用网上资料都讲的很好,说简单点就是减轻读取数据库的压力,原理也很简单:

被请求的数据会先到memcache里去取,如果没有就去数据库里取,顺便给memcache带一份。

每次更新数据也先更新memcache里的数据,如果没有则更新数据库,同时更新memcache。

因此需要注意的是这个数据是易失去性存储的。

模式和端口

Memcache是一个基于C/S的结构:

服务端:使用Memcached软件

客户端:使用Memcache插件 (这个插件是结合后端语言比如php python java)

服务端口:11211(可改)

软件清单:

lamp环境           yum -y install httpd php php-mysql mysql-server

操作系统                          CentOS-6.5(x86_64)

1.将上传相关软件包,安装lamp环境

yum -y install httpd php php-mysql mysql-server/etc/init.d/httpd startecho "<?php phpinfo()?>" > /var/www/html/index.php

然后用浏览器访问查看php信息,在信息里面是找不到memcache的

b2fabcd3f4ca2241d3d5da689de510f9.png

2.安装libevent插件

tar xf libevent-2.0.22-stable.tar.gz

cd libevent-2.0.22-stable./configure --prefix=/usr/local/libevent && make && make install

3.安装memcached服务端

tar xf memcached-1.4.36.tar.gz

cd memcached-1.4.36

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/make&& make install

安装好后会在/usr/local/memcached/bin/目录下生成memcached

4.配置环境变量

cd /etc/profile.d/vim mem.sh

export PATH="/usr/local/memcached/bin:$PATH" #写入profile文件开机自动导入

memcached-m 32 -p 11211 -d -c 8192 -u root #m分出内存大小 p 端口 d 混合模式 c 最大连接数

netstat-anptu | grep memcached        #查看是否启动,运行多实例更改端口即可

free-m                      #可以看到内存越来越少,因为被分配出去了

ps-aux | grep memcached            #查看进程pid是多少

kill-9 1234                   #关闭memcached服务

pkill memcached#同上

5.memcached使用

yum -y install nc telnet

1)使用nc命令连接memcache

printf "set first 0 30 5\r\nmmmmm\r\n" | nc 127.0.0.1 11211  #存数据 (字段分别为 key,标志,效期,长度,值 )

printf "get first\r\n" | nc 127.0.0.1 11211            #取数据

2)使用telnet命令连接memcache

telnet 127.0.0.1 11211    #然后就可以使用相关的memcached命令了

6.下面是关于memcached相关的操作命令

add key1 0 30 3    #添加数据30为效期(如果写0表示永不过期) 3为大小

set key1 0 30 3    #更新数据,不存在会自动创建

replace key1 0 30 3  #更新数据,不存在会报错

delete key1      #删除数据

get key1       #获取数据

gets key 1       #获取更多信息

stats setting    #查看配置信息

stats slabs     #查看slab

stats items     #查看item

stats size      #查看大小

7.安装memcache客户端php插件

安装phpize命令可以为php添加新模块

如果不知道是什么包可以使用 yum provides */phpize

yum -y install php-devel

tar xf memcache-2.2.7.tgz

cd memcache-2.2.7phpize#打模块,生成configure等文件

which php-config     #查看php-config路径位置

./configure --enable-memcache --with-php-config=/usr/bin/php-config

make&& make install

安装号后模块会被安装置/usr/lib64/php/modules/memcache.so

cd /etc/php.d/cpmysql.ini memcache.ini  #vim进行编辑将extension的值设置成memcache.so

重启服务后可以看到php已经支持了memcache模块了

78f445483cdc5fc8148fc994901560b6.png

8.后面可以结合php网站测试数据库相关

tar xf memcache_page.tar.gz -C /var/www/html/cd!$

0f40f5defeb13c80ed95edb5f7e07e47.png

测试页面有 mysql_connect.php 编辑一下

bbba038b647f58defa6ffbad62f2d60c.png

因此需要先把mysql的用户设置一下

/etc/init.d/mysqld start

mysql_secure_installation

或者自己在数据库里

grant all on *.* to 'root'@'127.0.0.1' identified by '123456'

flush privileges

然后浏览器访问mysql_connect.php

a3b3853c639f5705ff4a5aef932f907c.png

对接成功

这里可以阅读read.php和write.php了解memcache的读写原理

read.php

$memcache = newMemcache;$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");  #连接memcache服务器

$num=$_POST["num"];$db=db1;$tb=T1;$query="select * from $tb where ID=$num";  #mysql查询语句#$key=md5($query);

$key=md5($num);                  #对参数进行加密,可以看出memcache存储的值是进过加密的

if(!$memcache->get($key))            #尝试先从memcache取值,如果没有去数据库取,顺便给memcache来一份

{$conn=mysql_connect("127.0.0.1","root","123456");mysql_select_db($db);$result=mysql_query($query);#echo "mysql $num";

while ($row=mysql_fetch_assoc($result))

{$arr[]=$row;

}$f = 'mysql';$memcache->add($key,serialize($arr),0,30);$data = $arr;

}else{$f = 'memcache';$data_mem=$memcache->get($key);$data = unserialize($data_mem);

}echo "$f $num";echo "key is $key";echo "
";?>

write.php

<?php $memcachehost = '192.168.1.113';$memcacheport = 11211;$memcachelife = 60;$memcache = newMemcache;$memcache->connect($memcachehost,$memcacheport) or die ("Could not connect");$num=$_POST["num"];$db=db1;$tb=T1;$query="insert into $tb values($num)";#$key=md5($query);

$key=md5($num);if(!$memcache->get($key))            //先尝试更新memcache,如果不存在,则再去更新数据库,同时更新存储到memcachce

{$conn=mysql_connect("127.0.0.1","root","123456");mysql_select_db($db);$result=mysql_query($query);while ($row=mysql_fetch_assoc($result))

{$arr[]=$row;

}$f = 'mysql';$memcache->add($key,serialize($arr),0,30); //mysql 插入成功后,插入 memcached

$data = $arr;#}#else{

$f1 = 'memcache';$data_mem=$memcache->get($key);$data = unserialize($data_mem);

}echo "$f $f1 $num";echo "
";?>

上面两个php里可以看到调用了数据库的db1 和 表T1因此需要创建一下

seq 1 999 > /tmp/sum  #创建1-999的测试数据

连接数据库导入数据

create database db1; create T1(id int)engine=innodb;

load data infile'/tmp/sum' into table T1; #导入测试数据

科普一下:使用history查看历史命令,输入!+数字可以执行编号的那条命令

!111

用浏览器来访问那个测试页面

9067aaac908b5f12b4b20c0b3c2e674c.png

测试读取数据,从数据库里查询出id为5的值

e97b3a2673fa6149d57f27b2d59744a5.png

e911dec9c8a044f61e225fbaf21a9dfa.png

后退再去取一次

9214a4bad86aa274ff819d098ff6b180.png

测试写入数据

8c808c1073587b4a38d02b48f7ddf725.png

476195b1b89d5e8eb119493477f48dd0.png

最后给大家推荐一款很好用的memcache管理工具:memadmin    php写的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值