在ITOO项目学习中,遇到了Memcached这个概念。Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
在学习Memcached之前我们先来了解一下分布式缓存。
缓存的扩展,具有分布式的特性,所以叫分布式缓存。
缓存这种能够提升指令和数据读取速度的特性,随着本地计算机系统向分布式系统的扩展,在分布式计算领域中得到了广泛的应用,称为分布式缓存。
从本地缓存扩展到分布式缓存后,关注重点从CPU、内存、缓存之间的数据传输速度差异也扩展到了业务系统、数据库、分布式缓存之间的数据传输速度差异。
分布式缓存的特点:
高性能、灵活扩展性、高可用性、易用性
应用场景:
页面缓存,应用对象缓存,状态缓存,并行处理
了解了分布式缓存,我们再来看Memcached。
Memcached是高性能的分布式缓存服务器。
缓存服务器特点:
协议简单,基于libevent的事件处理(高性能,跨平台),内置内存存储方式,不互通信的分布式
内存管理:
在Slab中缓存记录的原理:
Memcached根据收到的数据的大小,选择最合适数据大小的Slab。
分布式:
缓存分布策略:
memcached客户端原装函数库Cache::Memcached
根据余数计算分散
缺点:一旦缓存服务器数量变动(命中率将大大降低)。
小结:
Memcached,就是a distributed memory object caching system 。既然是一个用来存东西的系统,那么一定要有个存放的地方,称为服务器端,然后谁把东西存放在上面就叫它客户端,那怎么放呢,肯定是 客户端 -- 连接服务器端 -- 把东西发送给服务器端 -- 实现了东西的存放,要去取的时候也是一样的,先连接,在取东西回来了。所有就有了memcached的服务器端。