壹、 缓存数据库

关系型数据库 mysql oracle
非关系型数据库(NOsql)memcached reids MongoDB
机械硬盘是形而上学硬盘速度的十倍以上
Memcached是开源的、高质量的纯内部存储器缓存服务软件。
缓存:将数据存款和储蓄在内部存款和储蓄器中,唯有当磁盘不可能符合规律达成工作时,才会启用缓存。
优点:速度快
症结:断电数据丢失(双电),用缓存存款和储蓄数据的指标只是为着应付大并发的事务,至于数目存款和储蓄及可相信性会丢掉。
mysql:关系型数据库
最大特征:保险数据不丟失
缓存数据库:(非关系型数据库,质量异常高,不过不有限帮忙数据完整)====》业务数据提供者。
代表者:memache redis

一.壹 缓存数据库使用情况

mysql:磁盘上的数据库,数据写入读取相对相当慢
memcached:内部存款和储蓄器中的数据库,数据读写快,数据易丢失。
数量存款和储蓄,数据商旅,采取mysql数据库
高并发,业务大的采纳选取memcache这种内部存款和储蓄器数据库
memcachedb 会将内部存款和储蓄器中的数目写入到磁盘中
redis 重要办事情形也是所在内部存款和储蓄器中,可是定时备份到内部存款和储蓄器数据到磁盘
做事中,mysql+redis(memcached)搭配使用

下边是笔者画的走访流程图

用户第2遍访问时响应流程

 

 

用户首回访问同样财富响应流程

 

 

 

 一.贰 作为数据库的缓存

当数据库(mysql)承受不住大现身的请求时,能够将数据缓存到内部存款和储蓄器中(缓存数据库),然后就足以化解了

1.3 session会话共享

此情此景:只要登六了网址,未来访问那么些网址任何页面都不用登入了。
cookies 是1个文件,类似身份音讯
网址开荒
4503.com,判别用户音信,最初阶才干格局:服务器在你的浏览器中写二个cookie,那些cookie包涵了您的用户名
一贯将个人数据存款和储蓄在cookies不安全,所以要将民用数据存储在服务端的文件,那些文件正是session文件
浏览器Cookie:存储sessionid
服务器Session: session id 重回个人音讯(session值)
行使境况:cookie+session
session存放在磁盘的文件中,2台web同时提供访问,会并发session文件找不到时的事态
消除方案:session共享
a. session文件通过NFS共享
b. session文件通过ENCORESync、SCP共享
c.
将session的剧情存放在数据库(mysql)中,全部机器都足以通过ip:port读取
利润:利用断电、重启丢失数据的性状定期清理数据:升高并发

二、安装memached

Memcached
是一个高品质的遍及式内部存储器对象缓存系统,用于动态Web应用以缓慢化解数据库负载。它经过在内部存款和储蓄器中缓存数据和目的来压缩读取数据库的次数,从而加强动态、数据库驱动网址的快慢。Memcached基于二个存款和储蓄键/值对的hashmap。其守护进度(daemon
)是用C写的,不过客户端能够用任何语言来编排,并因而memcached协议与护理进度通讯。

二.1 memcache不帮衬布满式集群

弥补措施:通过写程序达成布满式集群

健康的取余方法完毕布满式:会促成大出血效应

2.2 安装memcached

1 [root@cache01 ~]# yum install -y memcached

 

 二.叁 查看配置memcached文件

 

1 vim /etc/init.d/memcached
2 PORT=11211
3 #memcache默认端口为11211
4 USER=memcached
5 #默认用户
6 MAXCONN=1024
7 #最大连接数
8 CACHESIZE=64
9 #缓存大小64M

 

 

 

 2.4 启动memcache

 1 [root@cache01 init.d]# systemctl start memcached.service 
 2 [root@cache01 init.d]# systemctl status  memcached.service 
 3 ● memcached.service - Memcached
 4    Loaded: loaded (/usr/lib/systemd/system/memcached.service; disabled; vendor preset: disabled)
 5    Active: active (running) since Thu 2017-11-16 21:02:06 CST; 6s ago
 6  Main PID: 2841 (memcached)
 7    CGroup: /system.slice/memcached.service
 8            └─2841 /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024
 9 
10 Nov 16 21:02:06 cache01 systemd[1]: Started Memcached.
11 Nov 16 21:02:06 cache01 systemd[1]: Starting Memcached...

 

 

 

 

②.5 插入数据

预测试插入数据
请保持插入数据长度与数量长度一样,不然晤面世错误如下图

 

 

上面说数据大太了,无法写入

 

 

1 [root@cache01 ~]# printf "set key008 0 0 6\r\n123456\r\n"
2 set key008 0 0 6
3 123456

 

 

 

 

set 设置键值对

key00八 设置键名

0 flag 默许不改变

0 不过期

拾 字符长度

12345陆 插入的字符

的确插入数据

1 [root@cache01 ~]# printf "set key008 0 0 6\r\n123456\r\n"|nc 127.0.0.1 11211
2 STORED

 

 

 

 获取数据

1 [root@cache01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
2 VALUE key008 0 6
3 123456
4 END

 

 

 

 删除数据

1 [root@cache01 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211
2 DELETED

 

 

 

 

重复翻开数据,发掘已经未有了

1 [root@cache01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
2 END

 

 

  2.6 服务端memcached监控

 

 1 [root@cache01 init.d]# printf "stats\r\n"|nc 127.0.0.1 11211
 2 STAT pid 2841
 3 STAT uptime 2012
 4 STAT time 1510839336
 5 ………
 6 STAT incr_hits 0
 7 STAT decr_misses 0
 8 STAT decr_hits 0 #命令中数 为0  这是两个最重要的选项
 9 STAT cas_misses 0 #丢失数  为0
10 ………
11 STAT cas_hits 0
12 STAT cas_badval 0
13 STAT touch_hits 0
14 STAT touch_misses 0
15 STAT auth_cmds 0
16 END
  1. 监控port或进程
  2. 能够效仿用户先set后get,比对get内容是否set的。crond nagios zabbix
  3. 监察和控制命令中率
  4. 监督响应时间及须求的情景

三、PHP的memcache客户端

 

1 tar xf memcache-2.2.7.tgz
2 cd memcache-2.2.7
3 /application/php/bin/phpize #扩展php需要的命令
4 ./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
5 make && make install

 

 

 

 

1 下面生成memcache.so是客户端与服务端通信的

 

 

 

 3.1 添加php扩展

1 [root@web01 memcache-2.2.7]# sed -i.ori '$a\extension=memcache.so' /application/php/lib/php.ini
2 [root@web01 memcache-2.2.7]# tail -1 /application/php/lib/php.ini
3 extension=memcache.so

 

 

 

 

 1 [root@web01 memcache-2.2.7]# ps -ef | grep php-fpm
 2 root     53723     1  0 17:14 ?        00:00:01 php-fpm: master process (/application/php-5.5.32/etc/php-fpm.conf)
 3 nginx    53724 53723  0 17:14 ?        00:00:07 php-fpm: pool www
 4 nginx    53725 53723  0 17:14 ?        00:00:06 php-fpm: pool www
 5 nginx    54358 53723  0 18:30 ?        00:00:06 php-fpm: pool www
 6 root     57977  1747  0 22:07 pts/2    00:00:00 grep --color=auto php-fpm
 7 [root@web01 memcache-2.2.7]# kill 53723
 8 [root@web01 memcache-2.2.7]# kill 53723
 9 -bash: kill: (53723) - No such process
10 [root@web01 memcache-2.2.7]# /application/php/sbin/php-fpm -t
11 [16-Nov-2017 22:07:48] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
12 
13 [root@web01 memcache-2.2.7]# /application/php/sbin/php-fpm 
14 [root@web01 memcache-2.2.7]# /application/php/bin/php -m | grep memcache
15 memcache

 

 

 3.2 测试php

1 <?php
2 $memcache= new Memcache;
3 $memcache->connect('10.0.0.21',11211) or die ( "could not cnnect");
4 $memcache->set('1','3306');
5 $get_value=$memcache->get('1');
6 echo $get_value;
7 ?>

 

下面为显示结果

显示内容,测试成功

 

 三.三 memcache web分界面管理工科具

下载memcacheweb分界面管理工科具

 下载地址

 

 上面为memadmin管理工科具的选拔

 

 

 

 

 

3.4 session共享

 

     
 方法一:通进程序完毕,web03头要求往memcahce写session,web0二从memcahce读session(更有着通用性)

      

      
方法贰:通过php的布署文件,让php暗许将session存款和储蓄在文书中,修改为存款和储蓄在memcached中

内需运营和花费协同

       运行:筹算条件

       开发:用环境

1 sed -i 's#session.save_handler = files#session.save_handler = memache#;$a session.save_path = "tcp://10.0.0.21:11211"' /application/php/lib/php.ini
2 kill php
3 [root@web01 memcache-2.2.7]# /application/php/sbin/php-fpm -t
4 [16-Nov-2017 22:07:48] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
5 
6 [root@web01 memcache-2.2.7]# /application/php/sbin/php-fpm 

 

若是集群中有负载均衡,能够由此wireshark 查看ip,登入后,查看验证结果。