-
没有必要过多的关注性能。由于 Redis 只使用单核,而 Memcache 可以使用多核,所以在比较上,平均每一个核上 Redis 在存储小数据时比 Memcache 性能更高。而在 100k 以上的数据中,Memcache 性能要高于 Redis。无论使用哪一个,每秒处理请求的次数都不会成为瓶颈
-
对于 key-value 这样简单的数据储存,memcache 的内存使用率更高。如果采用 hash 结构,redis 的内存使用率会更高。当然,这些都依赖于具体的应用场景
-
Memcache 单个 key-value 大小有限,一个 value 最大只支持 1MB,而 Redis 最大支持 512MB
-
Memcache 是多线程,非阻塞 IO 复用的网络模型,Redis 是单线程的 IO 复用模型
-
数据一致性问题
Memcache 提供了 cas 命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis 没有提供 cas 命令,并不能保证这点,不过 Redis 提供了事务的功能,可以保证一串命令的原子性,中间不会被任何操作打断 -
Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,hash 等数据结构的存储
-
Memcache 不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件
-
Memcache 本身不能支持主从复制(数据同步),只能靠外部工具实现
-
Memcache 只是个内存缓存,对可靠性无要求;而 Redis 更倾向于内存数据库,因此对对可靠性方面要求比较高
-
应用场景:
Memcache:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如大量查询用户信息、好友信息、文章信息等)
Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如微博的计数和发布部分,对数据安全性、读写要求都很高)
网友评论