memcached 应用背景:针对大量重复数据请求访问,导致数据库压力变大,web访问速度变慢。在使用memcached后,服务端能通过缓存获取数据,而不需要访问数据库,从而提高网页响应效率。
memcached 分布式:memcached之间是不互相通信的,是不互相通信的分布式。服务器端并没有分布式的功能,只能基于客户端来进行分布式处理:
向memcached保存数据时候的方式:
add 仅当存储空间中不存在键相同的数据时才保存
replace 仅当存储空间中存在键相同的数据时才保存
set 与add和replace不同,无论何时都保存
获取数据:get和get_multi:
一次取得多条数据时使用get_multi。get_multi可以非同步地同时取得多个键值, 其速度要比循环调用get快数十倍。
删除数据:delete
Slab Allocation机制:整理内存以便重复使用
memcached会将获取的内存分成很多个大小一定的块,然后再将这些块有序的集合成组。
-f 参数能调整slab之间的大小间距。(默认为2)
查看memcached内部状态:
Telnet 机器名 端口号
查看memcached slab使用状态:
memcached-tool 主机名:端口
删除数据机制:
memcached并不会释放已经分配出去的内存,记录超时以后,客户端没法看到已经删除的内容。其存储空间即可重复使用。(是指,客户端不能通过key取出他的值。Memcached在分配空间时,优先使用已经过期的key/value对空间,当空间占满时,Memcached就会使用LRU算法来分配空间,删除最近最少使用的key/value对,将其空间分配给新的key/value对。在某些情况下,如果不想使用LRU算法,那么可以通过“-M”参数来启动Memcached,这样,Memcached在内存耗尽时,会返回一个报错信息。)
以上都几乎是拾人牙慧,具体还是需要对memcached使用才能知道~
http://kb.cnblogs.com/page/42733/
这是别人的解析,写得很详细,可惜能力有限,后面一些东西看不懂~