6、memcached 最大的优势是什么?
Memcached 最大的好处就是它带来了极佳的水平可扩展性,特别是在一个巨大的
系统中。由于客户端自己做了一次哈希,那么我们很容易增加大量 memcached
到集群中。memcached 之间没有相互通信,因此不会增加 memcached 的负载;
没有多播协议,不会网络通信量爆炸(implode)。memcached 的集群很好用。
内存不够了?增加几台 memcached 吧;CPU 不够用了?再增加几台吧;有多余
的内存?在增加几台吧,不要浪费了。
基于 memcached 的基本原则,可以相当轻松地构建出不同类型的缓存架构。除
了这篇 FAQ,在其他地方很容易找到详细资料的。
7、memcached 和 MySQL 的 query
cache 相比,有什么优缺点?
把 memcached 引入应用中,还是需要不少工作量的。MySQL 有个使用方便的
query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查询可以被反复
地快速执行。Memcached 与之相比,怎么样呢?MySQL 的 query cache 是集中
式的,连接到该 query cache 的 MySQL 服务器都会受益。
当您修改表时,MySQL 的 query cache 会立刻被刷新(flush)。存储
一个 memcached item 只需要很少的时间,但是当写操作很频繁时,MySQL
的 query cache 会经常让所有缓存数据都失效。
在多核 CPU 上,MySQL 的 query cache 会遇到扩展问题(scalability
issues)。在多核 CPU 上,query cache 会增加一个全局锁(global lock), 由
于需要刷新更多的缓存数据,速度会变得更慢。
在 MySQL 的 query cache 中,我们是不能存储任意的数据的(只能是
SQL 查询结果)。而利用 memcached,我们可以搭建出各种高效的缓存。比
如,可以执行多个独立的查询,构建出一个用户对象(user object),然后将
用户对象缓存到 memcached 中。而 query cache 是 SQL 语句级别的,不可能
做到这一点。在小的网站中,query cache 会有所帮助,但随着网站规模的增加,
query cache 的弊将大于利。
query cache能够利用的内存容量受到MySQL服务器空闲内存空间的限
制。给数据库服务器增加更多的内存来缓存数据,固然是很好的。但是,有了
memcached,只要您有空闲的内存,都可以用来增加 memcached 集群的规
模,然后您就可以缓存更多的数据。