1、memcache简介
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
Memcache由Danga Interactive开发,官方网站http://www.danga.com/memcached/ 。最初为了加速LiveJournal.com 访问速度而开发的,后来被很多大型的网站采用。LJ每秒动态页面访问量几千次,用户700万。
使用libevent进行网络IO处理,libevent作为一种新的非阻塞网络IO方式以高效的方法(epoll/kqueue)组织IO,分布式散列对象到不同的服务器,查询复杂度是O(1)。
基于memcache作者对分布式cache的理解和解决方案,memcache完全可以用到其他地方比如分布式数据库、分布式计算等领域。目前被广泛应用在facebook、wikipedia、sina、tom、sourceforge等大型网站。
2、Memcahce的实现机制
memcache本身在分布式应用中,单个结点之间是Server相互独立,不会存在同级之间的通信。客户端对多个server通过一个连接池进行连接,可以设置连接池当中每个Memcached的连接数权重,以根据服务器性能调整每台Memcached的连接数比例权重,实现近似的负载均衡。用户不必关心数据存放在哪个节点,由客户端统一算法进行分配。
memcache的Server结点对数据的存储操作都是在内存中完成,对内存分配和回收采用了曾在SunOS实现的分页机制,预分配一个大内存(默认是<= 200M),然后分页切块:将