`

Redis和Memcache对比及选择

阅读更多

http://www.cnblogs.com/EE-NovRain/p/3268476.html

 

我这段时间在用Redis,感觉挺方便的,但比较疑惑在选择内存数据库的时候到底什么时候选择redis,什么时候选择memcache,然后就查到下面对应的资料,是来自redis作者的说法(stackoverflow上面)。

    You should not care too much about performances. Redis is faster per core with small values, but memcached is able to use multiple cores with a single executable and TCP port without help from the client. Also memcached is faster with big values in the order of 100k. Redis recently improved a lot about big values (unstable branch) but still memcached is faster in this use case. The point here is: nor one or the other will likely going to be your bottleneck for the query-per-second they can deliver.

    You should care about memory usage. For simple key-value pairs memcached is more memory efficient. If you use Redis hashes, Redis is more memory efficient. Depends on the use case.

    You should care about persistence and replication, two features only available in Redis. Even if your goal is to build a cache it helps that after an upgrade or a reboot your data are still there.

    You should care about the kind of operations you need. In Redis there are a lot of complex operations, even just considering the caching use case, you often can do a lot more in a single operation, without requiring data to be processed client side (a lot of I/O is sometimes needed). This operations are often as fast as plain GET and SET. So if you don’t need just GEt/SET but more complex things Redis can help a lot (think at timeline caching).

    有网友翻译如下[1]:

    没有必要过多的关注性能。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。

    你需要关注内存使用率。对于key-value这样简单的数据储存,memcache的内存使用率更高。如果采用hash结构,redis的内存使用率会更高。当然,这些都依赖于具体的应用场景。

    你需要关注关注数据持久化和主从复制时,只有redis拥有这两个特性。如果你的目标是构建一个缓存在升级或者重启后之前的数据不会丢失的话,那也只能选择redis。

    你应该关心你需要的操作。redis支持很多复杂的操作,甚至只考虑内存的使用情况,在一个单一操作里你常常可以做很多,而不需要将数据读取到客户端中(这样会需要很多的IO操作)。这些复杂的操作基本上和纯GET和POST操作一样快,所以你不只是需要GET/SET而是更多的操作时,redis会起很大的作用。

    对于两者的选择还是要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,我在项目里还是采用memcache,它也足够的稳定可靠。如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择redis。

   

    关于redis和memcache的不同,下面罗列了一些相关说法,供记录:

    redis和memecache的不同在于[2]:

    1、存储方式:
    memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
    redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。

    与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。  
    2、数据支持类型:
    redis在数据支持上要比memecache多的多。

    Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
    3、使用底层模型不同:
    新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
    4、运行环境不同:
    redis目前官方只支持Linux 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

    5. 内核支持:

    由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。

    6、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复
     7、Redis支持数据的备份,即master-slave模式的数据备份

 

         个人总结一下,有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。

 

如果需要进一步深入了解请访问链接:https://www.zhihu.com/question/19829601

2
1
分享到:
评论

相关推荐

    memcache、redis、tair性能对比测试报告

    Ehcache作为组件级缓存,其性能受到web服务器和集群方式的影响,不具备与memcache、redis、tair的直接对比性。而MongoDB是文档型数据库,其设计目标与缓存系统不同,不适宜进行性能对比。 测试场景涵盖了单机环境和...

    Redis和Memcache对比与如何选择

    综上所述,Redis 和 Memcache 各有优势,选择哪一个主要取决于以下几点: 1. 性能需求:如果你的应用更看重单核性能和小数据处理,或者大数据值的读写速度,可以考虑 Memcache。如果需要支持更多并发和更复杂的数据...

    MemCache和Redis缓存介绍

    MemCache和Redis各有优势,选择哪种取决于具体的应用需求。若追求极致的性能且数据可接受丢失,可以选择MemCache;若需要更丰富的数据结构、持久化和主从复制等高级功能,Redis则是更好的选择。在实际项目中,两者也...

    ehcache memcache redis 差异

    本文将深入探讨三种常见的缓存系统:Ehcache、Memcached和Redis,分析它们之间的差异,以便于选择最适合特定业务场景的解决方案。 Ehcache是一款广泛应用于Java环境中的开源分布式缓存系统。它最初设计为本地内存...

    memcache redis tair 性能测试报告

    4. 并发get操作时,memcache和redis的TPS在1KB数据时接近,但在10KB和100KB数据时,memcache保持较高TPS,而redis性能下降。 【总结】 根据测试结果,redis在单线程set和get操作中表现出色,但在高并发set操作且...

    memcache、redis、tair性能对比测试报告.docx

    该测试报告主要对比分析了三种流行的分布式缓存系统——memcache、redis和tair在不同条件下的性能表现,以供选择适合特定需求的缓存解决方案。测试场景涵盖了单机环境和分布式环境,关注点在于缓存数据的设置和获取...

    redis培训教程

    描述了redis的基础,及与memcache的对比,redis的应用场景,redis的生产环境安全部署等内容

    memcache与redis

    标题“memcache与redis”指出我们将探讨两种流行的键值存储系统——Memcached和Redis。这两种技术都是用于数据缓存和快速访问的高性能解决方案,广泛应用于Web开发和其他需要高效数据处理的场景。 描述部分虽然为空...

    Redis,快看看这40道面试题.pdf

    ### Redis与Memcached对比 5. **Redis相比Memcached的优势** - **数据结构**:Redis支持更复杂的数据结构,而Memcached仅支持字符串。 - **持久化**:Redis支持数据的持久化,而Memcached不支持。 - **主从复制*...

    分布式数据库面试专题系列:Memcached+Redis+MongoDB-06.rar

    在面试中,候选人不仅需要展示他们对这些工具的深入理解,还需要能够分析和解决实际问题,如如何根据业务需求选择合适的数据库,如何设计高效的数据模型,以及如何应对潜在的性能瓶颈和扩展性挑战。

    Redis面试知识点.pdf

    ### Redis面试知识点详解 #### 1、什么是Redis? Redis是一个完全开源且免费的高性能key-value数据库,遵循BSD许可协议。...以上是关于Redis的一些关键知识点和面试中可能会遇到的问题及解答。希望对您有所帮助!

    (2024)Redis,快看看这40道面试题.pdf

    根据给定文件的信息,我们可以提炼出一系列关于Redis的重要知识点,这些知识点主要涵盖了Redis的基本概念、数据类型、优势对比、持久化机制、性能问题及其解决办法、过期键处理策略、淘汰策略、内存管理机制、同步...

    ehcache-memcache-redis三大缓存男高音.docx

    标题中的“ehcache-memcache-redis 三大缓存男高音”指的是三种常见的高性能缓存系统:Ehcache、Memcached和Redis。这三种缓存技术在IT领域广泛应用于提高应用程序的性能,通过存储经常访问的数据来减少数据库查询,...

    Redis day01.pdf

    掌握Redis的基础知识,尤其是缓存类型、淘汰策略、与其他缓存系统的对比以及Redis 6.0的多线程特性,对于实现高效的数据处理和缓存策略至关重要。 随着业务需求的增长和技术的演进,Redis在保证其基础设计原则——...

    Redis 45 道面试题及答案.docx

    10. **对比Memcached和Memcache**:Redis相比Memcached,不仅支持更多数据类型,而且速度更快,支持持久化,从而提供了更好的数据安全性。Memcached是纯内存存储,数据不持久化,且只支持简单的字符串数据类型。 总...

    Redis面试题和答案(50题).pdf

    根据提供的文件信息,...此外,Redis与Memcached之间的对比也突出了Redis在数据存储和管理方面的强大能力。通过深入了解Redis的特性及其与其他存储系统的差异,可以帮助开发者更好地选择合适的技术栈来满足项目需求。

    memcache jar

    - 与Redis相比,Memcache支持的数据类型较少,主要为字符串,而Redis支持更丰富的数据结构。 - 与MySQL的Memory引擎相比,Memcache更适合大规模的分布式缓存场景,而MySQL Memory更适合小规模的、需要事务支持的...

    sgg-Redis6课件.docx

    课程还对比了不同的 NoSQL 数据库,如 Memcache、Redis、MongoDB、HBase、Cassandra 等,并详细介绍了它们的特点、适用场景和不适用场景。 1. NoSQL 数据库简介 NoSQL(Not Only SQL)是一种非关系型数据库,解决...

Global site tag (gtag.js) - Google Analytics