Redis vs Memcached?

指标 Redis Memcached
网络IO模型 单线程的IO复用的网络模型 多线程的非阻塞IO复用的网络模型
支持的数据结构 key-value数据类型,还支持list、set、zset、hash等 key-value形式存储和访问数据
内存管理机制 现场申请内存 预分配的内存池
数据存储及持久化 in-memory、支持持久化:快照、AOF in-memory,不支持持久化
虚拟内存 物理内存用完时,可利用虚拟内存(不建议开启,开销大) 物理内存用完时,LRU替换掉不常用的缓存
数据一致性 提供事务,保证命令的原子性,中间不会被任何操作打断 提供了cas命令,保证多个并发访问操作同一份数据的一致性
集群管理 服务器端构建分布式存储 只能采用客户端实现分布式存储,比如在客户端用一致性哈希
性能 单核,数据量<10w 时高,数据量="">10w时低 多核,数据量<10w时低,数据量>10w时高

在数据持久化方面redis有更强大的功能。但是redis的快照不能保证数据不丢失,AOF会降低效率并且不能支持太大的数据量。如果只是缓存场景,那么开启固化可以在重启的时候有预热的数据不会导致数据库瞬间压力过大,但是可能会导致一些数据不一致,所以只能在允许一些数据不一致或者只读场景下使用。

在数据同步场景,Redis拥有更为丰富的数据类型(哈希、列表、集合、有序集合)。

comments powered by Disqus