相同点:
都是基于内存的数据库系统,最大存储量是根据机器内存大小而定。
都有不同的过期策略,分布式数据的备份可以设置一主多从,也可以一主一从(Master-Slave);
都支持key-value 数据缓存。
不同点:
1.IO方面:
Redis 使用的单线程IO复用网络模型, 而memcached 多线程非阻塞IO复用模型。
2.内存管理机制
redis 使用vm malloc/free包装来实现管理内存,而memcached 基于Slab Allocation机制管理内存 使用预分配的内存池的方式
3.数据存储
Redis中,并不是所有的数据都一直存储在内存中的,支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用 数据恢复方式:快照 和 追加文件(AOF)
而 memcache 数据都存储在内存中。
4.缓存类型
redis 支持key-value数据类型,还有list,set,zset,hash等数据结构,而memcached 支持 key-value 数据。
5.数据一致性
redis 提供给 事物 来保证,保证命令的原子性,中间不会被任何操作打断,而Memcached 提供了cas(Compare and Swap)命令,保证多个并发访问操作同一份数据的一致性
6.集群管理:
redis 可以在 服务器端构建分布式存储 , 而 memcached 则 只能采用客户端实现分布式存储
目前,想到的就这么多,有待后续补充。