Redis和Memcached的一些区别

简述

本文讲的是Redis和Memcached的一些区别, 我们都知道,把一些热数据存到缓存中可以极大的提高速度,那么问题来了,是用Redis好还是Memcached好呢,Memcached和Redis作为两种Inmemory的key-value数据库,在设计和思想方面有着很多共通的地方,功能和应用方面在很多场合下(作为分布式缓存服务器使用等) 也很相似。以下是它们两者之间一些简单的区别与比较。

区别

1. Redis不仅支持简单的k/v类型的数据,同时还支持list、set、zset(sorted set)、hash等数据结构的存储,使得它拥有更广阔的应用场景。

2. Redis最大的亮点是支持数据持久化,它在运行的时候可以将数据备份在磁盘中,断电或重启后,缓存数据可以再次加载到内存中,只要Redis配置的合理,基本上不会丢失数据,memcache挂掉后,数据没了。

3. Redis支持主从模式的应用。

4. Redis单个value的最大限制是1GB,而Memcached则只能保存1MB内的数据。

5. Memcache在并发场景下,能用cas保证一致性,而Redis事务支持比较弱,只能保证事务中的每个操作连续执行。

6. 性能方面,根据网友提供的测试,Redis在读操作和写操作上是略领先Memcached的。

7. Memcached的内存管理不像Redis那么复杂,元数据metadata更小,相对来说额外开销就很少。Memcached唯一支持的数据类型是字符串string,非常适合缓存只读数据,因为字符串不需要额外的处理。

8. Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。

9. 虚拟内存,Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘。

10. 过期策略,memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10。

11. 分布式,设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从。

12. 灾难恢复,memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复。

13. Redis支持数据的备份,即master-slave模式的数据备份。

14、应用场景不一样,Redis出来作为NoSQL数据库使用外,还能用做消息队列、数据堆栈和数据缓存等;Memcached适合于缓存SQL语句、数据集、用户临时性数据、延迟查询数据和session等;Redis适合数据量较小的更性能操作和运算上Memcache用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)

猜你喜欢

转载自blog.csdn.net/Zhihua_W/article/details/81110115