码迷,mamicode.com
首页 > 数据库 > 详细

memcached缓存数据库

时间:2018-03-14 18:44:52      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:缓存数据库

memcached缓存数据库

第1章 什么是memcache?

开源软件,用于动态web应用以减轻数据库的负载,通过在内存中缓存数据和对象来减少服务数据库的次数,从而提高网站访问的速度,工作机制是在内存中开辟一块空间,建立一个hash table   memcached自管理这些hash table

第2章 为什么用缓存数据库?

1.      mysql        ---数据存放在磁盘中,io较慢----数据仓库存储选择mysql这种磁盘数据库

2.      memcached   ---数据在内存中,io速度快---高并发,业务量大应选择memcache这种内存数据

第3章 缓存数据库使用场景:

1.      作为数据库的缓存---mysql承受不了大并发的请求时,可以将数据缓存到内存中

2.      session会话共享---只要登录了一次网站,以后都不需要再次登录了

第4章 cookiessession

网站程序判断用户登录信息,最开始的奇数方法:服务器在你的浏览器中写一个cookies,这个cookies中包含了你的用户名和登录信息,因为cookies是存储在本地浏览器中,所以第三方工具很容易盗取cookies中的隐私信息,这时,session应运而生

4.1 最开始:

cookies=内容(用户名,登录信息)

4.2 改进后:

cookies=session id

   session=用户名,登录信息

一般企业应用是cookies+session

第5章 memcached分部署缓存集群

memcached天生不支持分布式集群,只能通过程序支持分部署存储

5.1 memcached分布式缓存集群的特点:

所有mc服务器内存内容都是不一样的,这些服务器内容加起来接近数据库的容量,比如1t的数据库,一台缓存数据库内存没有那么大,因此分成10台服务器

5.2 普通hash算法:

动过客户端程序或者mc的负载均衡器上ongoinghash算法,让同一内容都分配到一个mc服务器上,这样的算法对于节点宕机会带来大量的数据流动,容易引起雪崩效应

5.3 一致性hash算法:

通过生成hash,数据都按照顺时针距离最近的服务器进行匹配,可以让节点宕机对节点数据的流动失效降到最低

技术分享图片

第6章 部署memcached服务:

1.1 安装服务端软件:

[root@nfs01 ~]# yum -y install memcached

1.1.1 查看memcached配置文件

[root@nfs01 ~]# cat /etc/sysconfig/memcached

PORT="11211"           监听端口

USER="memcached"       指定用户

MAXCONN="1024"         并发访问数量

CACHESIZE="64"         划分内存的大小

OPTIONS=""

1.2 启动memcache服务

[root@nfs01 ~]# /etc/init.d/memcached  start

Starting memcached:                                        [  OK  ]

1.3 向缓存数据库写入数据

[root@nfs01 ~]# printf "set key008 0 0 10\r\noldboy1234\r\n"|nc 127.0.0.1 11211

STORED                写入数据成功

key008---数据的name

0  ---

0    ---超时时间,超过这个时间将不能访问数据

10  ---表示写入数据的字符数,这里oldboy123410个字符数所以为10

1.4 查看数据库中的数据

[root@nfs01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211

VALUE key008 0 10

oldboy1234

END                  

1.5 删除数据

[root@nfs01 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211

DELETED             

[root@nfs01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211

END

第7章 客户端部署memcache:

2.1 安装memcache

1089  cd memcache-2.2.5

 1090  /application/php/bin/phpize

 1091  ./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir

 1092  make && make install

 1093  echo $?

2.1.1 执行完命令后检查目录下存在memcache.so即可

[root@web01 memcache-2.2.5]# ll /application/php-5.6.32/lib/php/extensions/no-debug-non-zts-20131226/

total 256

-rwxr-xr-x 1 root root 260643 Feb 19 21:21 memcache.so

2.1.2 增加phpmemcache模块

[root@web01 memcache-2.2.5]# sed '$a extension=memcache.so'/application/php/lib/php.ini -i.ori

[root@web01 memcache-2.2.5]# pkill php

[root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm  -t

[19-Feb-2018 21:30:59] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful

[root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm

[root@web01 memcache-2.2.5]# /application/php/sbin/php-fpm -m |grep memcache

memcache                  检查php是否增加了memcache模块功能

2.2 php代码测试:

2.2.1 在站点目录blog中编写测试文件:

cat >>/application/nginx/html/blog/mc.php<<'EOF'
<?php
$memcache = new Memcache;
$memcache->connect('10.0.0.21', 11211) or die ("Could not connect");
$memcache->set('key20180314', 'hello,world');
$get_value = $memcache->get('key20180314');
echo $get_value;
?>
EOF

2.2.2 测试web页面访问是否正常

技术分享图片

1.1.1 在缓存服务器上检查数据是否存在:

[root@cache01 ~]# printf "get key20180314\r\n"|nc 10.0.0.21 11211

VALUE key20180314 0 11

hello,world

END

第8章 web管理memcached:

tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/

浏览器访问http://blog.etiantian.org/memadmin

host:选项上填写缓存服务器的ip地址即可

技术分享图片

第9章 使memcached缓存 wordpress博文数据:

1.1 object-cache.php程序文件上传到站点目录中

cd /application/nginx/html/blog/wp-content/

rz

[root@web01 wp-content]# ll

total 28

-rw-r--r-- 1 nobody 65534    28 Jan  9  2012 index.php

-rw-r--r-- 1 root   root  10112 Mar 14 12:05 object-cache.php

1.2 修改文件中的IP地址

grep 127.0.0.1 object-cache.php

sed -i 's#127.0.0.1#10.0.0.21#' object-cache.php

1.2.1 登录网站发送一片博文:

技术分享图片

1.1.1 登录memcache  web界面进行检查:   缓存博文成功

技术分享图片

第10章 memcached  session会话共享:

方法一:通过程序实现,web01只需要往memcachesession,web02memcache读取session,当作普通数据读写,更具有通用性

方法二:通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached

sed 's#session.save_handler = files#session.save_handler = memcache#' /application/php/lib/php.ini -i

sed '$a session.save_path = "tcp://127.0.0.1:11211"' /application/php/lib/php.ini -i

/application/php/sbin/php-fpm  -t

pkill  php

/application/php/sbin/php-fpm

使用这个功能,需要使用phpsession函数

 


memcached缓存数据库

标签:缓存数据库

原文地址:http://blog.51cto.com/13520772/2086875

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!