Memcached是一套分布式的内存对象缓存系统。使用C语言编写。作为数据库的前端cache,缓存数据库查询结果能够减轻数据库负载。
类似一张巨大的hash表。缓存的对象以key-value对的形式存在。
服务守护进程执行后,client连接到服务进程进行操作。眼下支持python,c,php等多种client。服务进程基于事件的单进程单线程实现。
服务进程把分配的内存切割成各种固定尺寸的块,依据待缓存数据的大小选择一个最合适大小的块存入。分配的内存不会释放,而是反复利用。
数据大小和块的大小不匹配时会造成内存利用率低下。默认情况下不同大小的块的尺寸以2的增长因子扩大。能够使用‘-f‘选项调整增长因子。
一般使用hash值modserver台数来选择。这样当server台数发生变化时会造成大量key相应的server改变,短时间内数据库server负载很大。一致性hash能够解决问题。
依据key相应的圆环上的点顺时针行进找到的第一个节点即为应保存的位置。
原文:http://www.cnblogs.com/claireyuancy/p/6718415.html