《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》第3章Memcached应用实战,本章主要介绍Memcached的特征、运行原理和使用经验。Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,进而提升系统性能。本节为大家介绍什么是Memcached。
第3章 Memcached应用实战
本章主要介绍Memcached的特征、运行原理和使用经验。Memcached是一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,进而提升系统性能。Memcached在很多时候都作为数据库的前端cache使用,因为它比数据库少了很多SQL解析、磁盘操作等开销,而且使用内存来管理数据,所以它可以提供比直接读取数据库更好的性能。另外,Memcached也经常作为服务器之间数据共享的存储媒介。学习完本章,相信读者能够对Memcached有一个全面的了解,使构建一套属于自己的分布式内存对象缓存系统变成很简单的事情。
3.1 Memcached基础
3.1.1 什么是Memcached
Memcached是一个免费开源的、高性能的、具有分布式内存对象的缓存系统,它通过减轻数据库负载加速动态Web应用。最初版本由LiveJournal的Brad Fitzpatrick在2003年开发完成。目前全世界很多用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速度。Memcache是这个项目的名称,而Memcached是服务器端的主程序文件名。
缓存一般用来保存一些经常存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来),通过缓存来存取对象或数据要比磁盘存取快很多。Memcache是一种内存缓存,把经常存取的对象或数据缓存在内存中,内存中缓存的这些数据通过API的方式被存取,数据就像一张大的HASH表,以key-value对的方式存在。Memcache通过缓存经常被存取的对象或数据,来减轻数据库的压力,提高网站的响应速度,构建速度更快的可扩展的Web应用。图3-1展示了Memcache和数据库协作的流程。
这个流程的具体逻辑如下:
1)检查客户端请求的数据是否在Memcache中存在,如果存在,直接把请求的数据返回,不再对数据进行任何操作。
2)如果请求的数据不在Memcache中,就去查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcache中。
3)每次更新数据库(如更新、删除数据库的数据)的同时更新Memcache中的数据,保证Memcache中的数据和数据库中的数据一致。
![]() |
图3-1 Memcache和数据库协作工作流程 |