Memcached是一个高性能的分布式对象缓存系统,主要用于动态Web应用,以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。Memcached解决了共享内存只能单击应用的局限,更不会出现使用数据库做类似的事情时候导致磁盘开销和阻塞的发生。
1.为什么需要Memcached
高并发访问数据库容易造成死锁
基于客户端分布式,多客户端共享缓存
Net+Memory>>IO
读写性能完美:1s可以读取1万次,写10万次
超简单集群搭建Cluster
Open Source
学习成本低,入门容易
丰富的成功案例
不足的是既没有提供主从复制功能,也没有提供容灾等功能,所有的代码基本都只是考虑性能最佳。
2.适用Memcached的业务场景
(1).如果网站包含了访问量很大的动态网页,那么数据库的负载将会很高。由于大部分数据库请求都是读操作,因此Memcached可以显著地减小数据库负载。
(2).如果数据库服务器的负载比较低但cpu使用率很高,就可以缓存计算好的结果(computed objects)和渲染后的网页模板(enderred templates)。
(3).利用Memcached可以缓存session数据、临时数据,以减少对它们的数据库写操作。
(4).缓存一些很小但被频繁访问的文件。
3.不适用Memcached的业务场景
(1).缓存对象的大小大于1MB。
(2).key的长度大于250字符。
(3).虚拟主机不让运行Memcached服务。
(4).应用运行在不安全的环境中。Memcached未提供任何安全策略,仅仅通过Telnet就可以访问到。如果应用运行在共享的系统上,需要着重考虑安全问题。
(5).业务本身需要的是持久化数据或者说是database。