欢迎来到天天文库
浏览记录
ID:37552975
大小:1.34 MB
页数:40页
时间:2019-05-25
《Memcached 原理、安装及c语言环境搭建和测试程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MemcachedMemcached原理、安装及c语言环境搭建gu使TechTalkTTechTalkechTalk目录索引目录索引Memcached介绍Memcached安装和使用一些技巧Q&A2MemcachedMemcached介绍介绍::什么是Memcached?Memcached是国外社区网站LiveJournal的开发团队开发的高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。LiveJournalLLi
2、veJournalLiveJournal团队开发了包括MemcachedMemcachedMemcached、MogileFSMMogileFSMogileFS、PerlbalPPerlbalPerlbal等不错的开源项目。官方网站:http://www.danga.com/memcached/hhttp://www.danga.com/memcached/http://www.danga.com/memcached/3MemcachedMemcached介绍介绍Memcached运行图4Memcached
3、Memcached介绍介绍谁在用Memcached?国外国内5MemcachedMemcached介绍介绍与Memcached类似的还有什么?国外TokyoCabinet:http://tokyocabinet.sourceforge.net/index.html(日本mixi.jp公司开发)国内MemcacheDB:http://memcachedb.org(新浪开源Team开发)tmcache:http://heiyeluren.googlecode.com(偶开发的^_^)6MemcachedMemc
4、ached介绍介绍Memcached的主要特点•基于C/S架构,协议简单•基于libevent的事件处理•自主内存存储处理•基于客户端的Memcached分布式7MemcachedMemcached介绍介绍基于C/S架构,协议简单8MemcachedMemcached介绍介绍基于libevent的事件处理libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris等操作系统的的事件处理。包装的接口包括:poll、select(Windows)
5、、epoll(Linux)、kqueue(BSD)、/dev/pool(Solaris)Memcached使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。libevent:http://www.monkey.org/~provos/libevent/9MemcachedMemcached介绍介绍自主的内存存储处理•数据存储方式:SlabAllocation•数据过期方式:LazyExpiration+LRU10MemcachedMemcached介绍介绍数
6、据存储方式:SlabAllocationSlabAlloction构造图SlabAllocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。SlabAllocation的原理相当简单。将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合)11MemcachedMemcached介绍介绍数据存储方式:SlabAllocationPage:分配给Slab的内存空间,默认是SlabClasses分配图1MB。分配给Slab之后根据sl
7、ab的大小切分成chunk。Chunk:用于缓存记录的内存空间。SlabClass:特定大小的chunk的组。memcached根据收到的数据的大小,选择最适合数据大小的slab。memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中。12MemcachedMemcached介绍介绍::数据存储方式:SlabAllocationSlabAlloction缺点这个问题就是,由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将100字节的数据缓存到1
8、28字节的chunk中,剩余的28字节就浪费了。13MemcachedMemcached介绍介绍::数据过期方式•LazyExpirationmemcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。•LRUmemcached会优先使用已超时的记录的空间,但即使如此,也会
此文档下载收益归作者所有