正在为你努力加载中........

点滴记录 分享
17
2011-10
首页 >> memcache >> memcache和redis的区别

memcache和redis的区别

 Mc是一个多线程key-value内存缓存系统。通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
最大30天的数据过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA = 60*60*24*30控制。最大键长为256字节,大于该长度无法存储,常量KEY_MAX_LENGTH = 128控制。单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK = 1048576进行控制,它是默认的slab大小。跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式。最大同时连接数是200,通过 conn_init()中的freetotal进行控制,最大软连接数是1024,通过settings.maxconns=1024 进行控制。单进程在32位系统中最大使用内存为2G,若在64位系统则没有限制。由于32位系统限制单进程最多可使用2G内存。
Rd是一个单线程key-value存储系统。与Mc对比,它支持存储的value类型更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
本身数据不会过期,一个value最大可以占用1G大小。只能在linux系统上部署。
1)性能对比:由于Rd只使用单核,而Mc可以使用多核,所以平均每一个核上Rd在存储小数据时比Mc性能更高。而在100k以上的数据中,Mc性能要高于Rd,虽然Rd最近也在存储大数据的性能上进行优化,但是比起 Mc,还是稍有逊色。
2)内存管理机制:Mc的按chunk大小存放数据的机制,会导致空间浪费。对于过期数据的处理上,Mc不会主动淘汰过期的数据,只有当客户端主动获取数据或者内存空间不够的情况,才会做过期数据淘汰。Rd会主动淘汰数据,释放内存空间。
3)Rd支持服务器端的数据操作:Rd相比Mc来说,拥有更多的数据结构并支持更丰富的数据操作,通常在 Mc 里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Rd中,这些复杂的操作通常和一般的 GET/SET一样高效。
4)Rd会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了主从同步。Mc只将数据存放在内存中。

作者:一根烟的寂寞 分类:memcache
浏览:1435 评论:0

发表评论: