摘要: 本文讨论了Memcached的内存分配机制,这里给出一些自己的见解: Memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存,属于预分配方式。我们来看看Slab Allocator的原理。 下面是Memcached文档中的slab allocator的目标: “the primary goal of the slabs subsystem in memcached was to eliminate memory fragmentation issues totally by using fixed-size memory chunks coming from a few predetermined size classes.” 也就是说,Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块, 以完全解决内存碎片问题。 由于使用的是预分配方式,Memcached不会释放已分配的内存,而是重复使用已分配的内存,这就造成了下文所说的数据丢失,命中下降的问题。 阅读全文
posted @ 2011-07-20 10:39 inThink 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 本文讨论了使用Memcached时,到底要缓存什么的问题,值得深入讨论,与大家共享。   最近公司一直在招人,我作为主考官之一 。经常会提问的一个问题,就是让用户介绍自己在缓存方面的经验和心得。绝大多数的面试者只能说ASP.net的页面缓存和局部缓存,稍稍有点经验的,会提到企业库的缓存,只有很少的人会知道Memcached(一个分布式的缓存)。而对于缓存的一些基本思想,却没有一个人能说出来。   现在的技术人员,很多时候,不管三七二十一,把一个个实体丢到缓存中,然后在用的时候,就从缓存中去找这个实体。而不会考虑缓存的其他方面因素。所以他们在提到缓存时,想到的才只能是一个个的缓存实现的方法,而不是缓存的思想。   那么,肯定就有人问,蝈蝈俊,那你理解的缓存思想是如何的呢?下面我就一一来说出我理解的缓存。 阅读全文
posted @ 2011-07-20 10:15 inThink 阅读(717) 评论(0) 推荐(0) 编辑
摘要: 本文讨论了Memcached客户端分布式算法的测试情况,与大家共享。 阅读全文
posted @ 2011-07-20 10:04 inThink 阅读(898) 评论(0) 推荐(0) 编辑
摘要: 本文从计算机结构的角度讨论了算法的设计与优化,与大家共享。 算法设计,我们一般都从理论上去考虑一个算法,即怎么做才能使得时空复杂度最优。但是在实际情况下把一个算法完美的实现是一件不容易的事情。所以搞理论的 人千万不要把实现算法看成很轻松的事情,因为你的算法可能根本在实际中没有一个有效的实现方法,而且即使能够很容易的实现,可是由于实现的人不了解计算机 的结构而使得算法运行起来并不是令人满意。 阅读全文
posted @ 2011-07-20 09:56 inThink 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 如何提高缓存的命中率?这个问题要从缓存的种类开始说起。我们先从计算机底层缓存结构开始,然后论述应用层的缓存,最后讨论客户端的缓存。 阅读全文
posted @ 2011-07-20 09:38 inThink 阅读(834) 评论(1) 推荐(0) 编辑