memcached限制以及与reids的比较

一、memcached限制

在分布式企业级应用中,memcached被广泛使用。但是关于它自身的一些限制需要我们了解:
1、过期时间
memcached的缓存策略为:失效时间 + LRU(最近最少使用)。其过期时间设置上限阈值为30天,若超过30天后,将获取不到存储的数据。
2、数据稳定性
memcached需要保证集群的内存空间足够大,否则内存满了之后,会采用LRU置换算法,将部分数据清除,加上其无法进行持久化,所以将导致数据丢失。
3、存储限制
键被限制在250字符之内。而且由于memcached默认采用了slab内存分配机制,所以单个数据项不能超过 1M。memcached没有采用malloc/free的方法来分配内存,因为后者可能产生大量内存碎片,操作系统极端情况下需要消耗大量资源在内存管理上。使用了slab后,通过分配的可重复使用的chunk来解决这一问题。关于memcached的内存管理机制可以参考http://basiccoder.com/memcached-memory-mamagement.html
4、访问限制
允许最大同时连接数200.
5、支持数据结构单一
只支持key-value结构。没有redis提供的丰富数据结构
6、没有自带分布式实现

需要自己实现。比如比较常见的,通过虚拟化一致性哈希即可实现。

二、与redis的比较

与redis的比较这也是一个老生常谈的话题。相比来说,redis作为一种缓存,或者干脆称之为nosql数据库,提供了丰富的数据类型(list、set等),可以将大量数据的排序从单机内存解放到redis集群中处理,并可以用以实现轻量级消息中间件。其自带master-slave备份、支持持久化。memcached和redis的性能比较上,redis在小于100K的数据读写上速度优于memcached。但数据大小过大时,其性能将急遽降低,劣于memcached。但是不知道最新的redis是否在该问题上已经做了优化。

相关推荐