一、内存分配与使用
Memcached使用预分配的内存池的方式,使用slab和大小不同的chunk来管理内存,
Item根据大小选择合适的chunk存储,内存池的方式可以省去申请/释放内存的开销,并且能减小内存碎片产生,但这种方式也会带来一定程度上的空间浪费,并且在
内存仍然有很大空间时,新的数据也可能会被剔除
Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,
会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,
并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,
导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。
二、支持的数据类型
Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能
Redis除key/value之外,还支持list,set,sorted set,hash等众多数据结构,提供了KEYS进行枚举操作,但不能在线上使用,如果需要枚举线上数据,Redis提供了工具可以直接扫描其dump文件,枚举出所有数据,Redis还同时提供了持久化和复制等功能。
ttserver与memcached一样,只支持简单的key-value,不过能实现持久化
上面内容摘自‘农夫庄园’,链接:http://nonfu.me/p/10854.html