共计 5671 个字符,预计需要花费 15 分钟才能阅读完成。
介绍
它是一套数据缓存系统或软件
用于动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升性能的效果,实际应用环境中多用于数据库的 cache 的应用。它是通过预分配指定的内存空间来存储数据
定义
它是一个开源的、高性能的,具有分布式内存对象的缓存系统,它一般用来存储经常读取的对象或数据,如同 web 服务器会将一些内容缓存到客户端本地一样
MySQL 已经有 cache 了,为啥还要在它前面加一层 memcached?
memcached 是一个 key/value 系统,系统相对于 MySQL 简单很多,虽然 MySQL 也有 cache,但是数据库的 SQL 解析会耗费性能,查询慢于 memcached,另外 MySQL 的 cache 设计得更加复杂,因为要考虑事务,日志,存储引擎等模块,它的性能也没有 memcached 好
memcached 只做一件事情,简单高效,在 cache 上比 MySQL 强,这应该容易理解
memcached 的应用场景
数据库的前端缓存应用:让它来分担数据的并发压力,当数据更新时,可以使程序通知缓存进行更新
session 会话共享的共享存储
memcached 应用中的工作流程
它是一种内存缓存,可通过 API 的方式读取内存中缓存的这些数据,当用户需要读取数据时,会首先访问 memcached 内存缓存,如果缓存中有数据就直接返回给前端的应用程序,如果没有,再转发给后台端的服务器,这时服务器除了返回数据给用户,还会将数据更新给 memcached 缓存。
并发压力会增大,可能会导致后端的服务器也跟着宕机,无法提供服务,
那么这时我们的处理流程是这样的:
首先从负载均衡中将 WEB 应用停掉 —–> 让负载均衡不再转发数据给 WEB—-> 接着启动缓存服务器 ——–>
通过程序把数据库的内容初始化到缓存服务器中 ——-> 然后将 web 应用启用 ——-> 重启数据库服务器
特性
协议简单:协议使用比较简单,使用基于文本行的协议
基于 libevent 的事件处理
memcached 软件的工作原理
它是一套 C / S 模式架构的软件,在服务器端启动服务守护进程,可以为 memcached 服务器指定监听的 IP 地址、端口号、并发访问连接数以及分配多少内存来处理客户的请求参数
需要被缓存的数据以 key/value 键值对的形式在服务器端预分配的内存区中,每个被缓存的数据都有唯一的标识 key
安装与配置
CentOS release 6.8 (Final)
[root@linuxidc ~]# uname -r
2.6.32-696.6.3.el6.x86_64
libevent 安装
[root@linuxidc software]# cd libevent-2.1.8-stable
[root@linuxidc libevent-2.1.8-stable]# ./configure
[root@linuxidc libevent-2.1.8-stable]# make
[root@linuxidc libevent-2.1.8-stable]# make install
安装 memcached
[root@linuxidc libevent-2.1.8-stable]# find / -name memcached
/etc/sysconfig/memcached
/etc/rc.d/init.d/memcached
/usr/bin/memcached
/var/run/memcached
配置 ld.so.conf 路径防止启动时报错
[root@linuxidc lib]# ldconfig
[root@linuxidc lib]# which memcached
/usr/bin/memcached
memcached 参数介绍
配置 memcached
[root@linuxidc lib]# lsof -i:11111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
memcached 17416 root 26u IPv4 90768 0t0 TCP *:vce (LISTEN)
memcached 17416 root 27u IPv4 90785 0t0 UDP *:vce
[root@linuxidc lib]# netstat -lntup|grep mem
tcp 0 0 0.0.0.0:11111 0.0.0.0:* LISTEN 17416/memcached
udp 0 0 0.0.0.0:11111 0.0.0.0:* 17416/memcached
写入数据
STORED
[root@linuxidc ~]# printf “get key001\r\n”|nc 127.0.0.1 11111 #查询数据
VALUE key001 0 10
test123456
END
[root@linuxidc ~]# printf “delete key001\r\n”|nc 127.0.0.1 11111 #删除数据
DELETED
[root@linuxidc ~]# printf “get key001\r\n”|nc 127.0.0.1 11111
END
一般启动时最好指定下 PID
[root@LVS-2 ~]# memcached -p 11213 -u root -m 16m -c 1024 -d -P /var/run/11213.pid #指定进程文件
[root@LVS-2 ~]# kill `cat /var/run/11213.pid`
提示:实际生产环境中,要布署 memcached 服务,做为数据缓存,内存的指定大小是根据业务来确定,是不是需要负载均衡?最好同开发一起讨论确定好,还有它还有分客户端与服务端
配置 session 会话共享存储
vi /applicaton/php/lib/php.ini
session.save_path = “/tmp” 改成 memcached 服务器地址 tcp ://10.10.10.1:11211
session.save_handler = files(改成 memcached)
将所有的 WEB 服务器 (WEB 服务器需要安装客户端) 里的 PHP 配置文件改成上述配置,即可完成会话共享存储
memcached 监控软件介绍
[root@LB01 vhost]# cd /web/www/
[root@LB01 www]# wget http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz
[root@LB01 www]# tar zxf memadmin-1.0.12.tar.gz
无需安装,解压即可
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146597.htm