缓存数据库Memcache

为什么用缓存数据库:
MySQL:磁盘上的数据库,数据写入读取相对较慢
Memcached:内存中的数据库,数据读写都快,但是数据易丢失
数据存储,数据仓库选择MySQL这种磁盘的数据库
高并发,业务大的应用选择Memcached这种内存数据库
工作中,MySQL+Memcached/Redis搭配使用

Memcached介绍
Memcached是一款开源的、高性能的纯内存缓存服务软件。Mem是内存的意思,cache是缓存的意思,d是daemon的意思。
http://memcached.org/

Memcached在企业中使用场景
优点:
①对于用户来讲,用户访问网站更快了,体验更好了。
②对网站来说,数据库压力降低了。只有当内存没有数据时才会去请求数据库。第一次写入的数据也会请求数据库。一般公司没有预热,只有当用户读取过数据库才会放到Memcached中。
③提升了网站的并发访问,减少服务器数量。
在这里插入图片描述

Cookies和Session
网站程序判断用户登陆信息,最开始的技术方法:服务器在你的浏览器中写一个cookies,这个cookies就包含了你的用户名及登录信息。因为cookies是存储在本地浏览器中,所以第三方工具很容易盗取cookies中的隐私信息。
最开始:
cookies cookies名字:内容(用户名,登录信息)
改进:
本地浏览器:
cookies cookies名字:内容(session id 编号)
服务器:
session session id:内容(用户名,登录信息)
主流使用场景:cookies + session

Memcached分布式缓存集群
Memcached天生不支持分布式集群,只能通过程序支持分布式存储

Memcached分布式缓存集群的特点:
所有MC服务器内存的内容都是不一样的。这些服务器内容加起来接近数据库的容量。比如1T的数据库,一台缓存数据库的内存没有那么大,因此分成10台缓存服务器。

环境准备:

1,从CentOS7模板机全新克隆一台新主机
IP规划为10.0.0.21/172.16.1.21,主机名为cache01
其次,准备一台能够打开wordpress的web01机器(CentOS6),仿真企业真实环境,多系统混合使用

2:安装Memcached
yum -y install memcached
查看配置文件
cat /etc/sysconfig/memcached
查看启动文件
cat /usr/lib/systemd/system/memcached.service
启动服务
systemctl start memcached.service

3:memcahed相关参数
-p 指定监听端口 (default: 11211)
-l 绑定监听的网卡
-d 后台运行
-u 指定用户
-m 分配内存大小 (default: 64 MB)
-c 并发访问连接数 (default: 1024)
-P 指定pid文件存放路径,需要与-d一起使用

4:Memcached使用
1)memcached存储方式:
key <-> value
name <-> oldboy
读写数据telnet VS nc
#写入数据
printf “set key008 0 0 10\r\noldboy0987\r\n”|nc 10.0.0.21 11211
读取数据
printf “get key008\r\n”|nc 10.0.0.21 11211
删除数据
printf “delete key008\r\n”|nc 10.0.0.21 11211
#查看状态
printf “stats \r\n”|nc 172.16.1.21 11211

2)命令语法说明
set key 0 0 10 \r\n oldboy0987 \r\n
< > \r\n \r\n

  • 是在取回内容时,与数据和发送块一同保存服务器上的任意16位无符号整型(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。
  • 是终止时间。如果为0,该项永不过期(虽然它可能被删除,以便为其他缓存项目腾出位置)。如果非0(Unix时间戳或当前时刻的秒偏移),到达终止时间后,客户端无法再获得这项内容。
  • 是随后的数据区块的字节长度,不包括用于分页的“\r\n”。它可以是0(这时后面跟随一个空的数据区块)。
    \r\n
  • 是大段的8位数据,其长度由前面的命令行中的指定。

\n 换行且光标移至行首
\r 光标移至行首,但不换行

让memcached只监听某个网卡
在这里插入图片描述

Memcache客户端
1)将web01的wordpress准备好,接下来在这台机器安装memcache客户端。
tar xf memcache-2.2.5.tgz
cd memcache-2.2.5

因为memcache是php的一个插件,所以运行这个添加PHP功能:/application/php/bin/phpize
然后编译安装:./configure --enable-memcache --with-php-config=/application/php/bin/php-config --with-zlib-dir
make
make install

有这个文件代表成功:
在这里插入图片描述

然后修改PHP的配置文件:
sed -i ‘$a extension=memcache.so’ /application/php/lib/php.ini

重启PHP:
pkill php #killall php-fpm
/application/php/sbin/php-fpm -t
/application/php/sbin/php-fpm
检查有没有memcache模块:/application/php/bin/php -m|grep memcache

2)php代码测试
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('key_oldboy', 'hello,oldgirl'); $get_value = $memcache->get('key_oldboy'); echo $get_value; ?>

EOF
测试:
[root@cache01 ~]# printf “get key20171117\r\n”|nc 10.0.0.21 11211
VALUE key20171117 0 11
hello,world
END

3)web管理memcached
官网:http://www.junopen.com/memadmin/
要下载这个管理端:
tar xf memadmin-1.0.12.tar.gz -C /application/nginx/html/blog/
浏览器访问http://blog.etiantian.org/memadmin

Memcached缓存案例1-缓存wordpress数据库,把网站的数据缓存到Memcached
wordpress缓存数据缓存到memcached中:https://cn.wordpress.org/plugins/memcached/
wordpress缓存数据缓存到redis中:https://cn.wordpress.org/plugins/redis-cache/
wordpress会自动检查wp-content下面是否有object-cache.php
使用memcached缓存wordpress博文数据
修改:array(‘127.0.0.1’,‘’);为memcached服务器ip地址

Memcached Session共享
方法1:通过程序实现,web01只需要往memcahce写session,web02从memcahce读session,当作普通数据读写(更具有通用性)

方法2:通过php的配置文件,php默认将session存储在文件中,修改为存储在memcached中,修改session.save_path的地址为memcahce的地址
在这里插入图片描述

替换文件,追加到最后一行:sed -i ‘s#session.save_handler = files#session.save_handler = memcache#;$a session.save_path = “tcp://172.16.1.21:11211”’ /application/php/lib/php.ini

使用这个功能,需要使用php的session函数

Memcached监控
printf “stats\r\n”|nc 127.0.0.1 11211
①监听port或进程
②可以模拟用户先set后get,比对get内容是不是set的。crond nagios zabbix
③监控命中百分比
printf ‘stats\r\n’|nc 172.16.1.21 11211 |awk -vRS=“\r\n” ‘/cmd_get/{get=KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲/get_hits/{hits…NF}END{print hits/get}’
④监控响应时间及需要的状态

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值