您的位置:首页 > 数据库 > Memcache

memcache 和Redis 的比较

2019-07-22 11:10 911 查看

memcache 和Redis 的比较:

1)性能方面
没有必要过多的关心性能,因为二者的性能都已经足够搞了。由于Redis 只使用单核,而Memcached可以使用多核,所以比较上,平均每一个核上Redis 在存储小数据时比Memcached 性能更高。而在100K 以上的数据中,Memcached 性能要高于Redis,虽然Redis 最近也在存储大数据的性能上进行优化,但是比起Memcached ,还是稍有逊色。
2)内存使用效率
使用简单的key-value 存储的话,Memcached 的内存利用率更高,而若干Redis 采用hash 结构来做key-value 存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和应用场景和数据特性有关。
3)数据持久化
若果你对数据持久化和数据同步有所要求,那么推荐选择Redis。因为这两个特性Memcached 都不具备。即使只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis 也是明智的。
4)数据结构
最后还是要说具体应用需求。Redis相比Memcached 来说,拥有更多的数据结构并支持更丰富的数据操作,通常Memcached 里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis 中,这些复杂的操作通常和一般的GET/SET一样高效。所以若果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
5)网络IO模型方面
Memcached 是多线程,分为监听线程、worker线程、引入锁,带来了性能损耗。Redis 使用单线程的IO服用模型,将速度优势发挥到最大,也提供了较简单的计算功能。
6)内存管理方面
Memcached 使用预分配的内存池的方式,带来一定程度的空间浪费,并且在内存仍然有很大空间时,新的数据也可以会被剔除,而Redis 使用现场申请内存的方式来存储数据,不会剔除任何非临时数据Redis 更适合作为存储而不是cache。
7)数据的一致性方面
Memcached 提供了cas命令来保证。而Redis提供了事务的功能,可以保证一串命令的原子性,中间不会被任何操作打断。

简单的比较Redis与Memcached 的区别,大多数都会有一下观点:
1)Redis 不仅仅支持简单的K/V类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
2)Redis 支持数据的备份,即master-slave 模式的数据备份。
3)Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
4)Redis 可以实现主从复制,实现故障恢复。
5)Redis的Sharding 技术:很容易将数据分布到多个Redis中。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: