`

Redis和Memcache的区别分析

 
阅读更多

1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。

2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

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

4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存

来看下Redis作者对比redis和memcache

 

来源:《Is memcached a dinosaur in comparison to Redis?》(相比Redis,Memcached真的过时了吗?)

 

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.

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

 

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.

如果要说内存使用效率,使用简单的key-value存储的话,Memcached的内存利用率更高,而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。

 

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.

如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。

 

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).

当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的 GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。


1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘
4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10
5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从
6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)
7、灾难恢复--memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复
8、Redis支持数据的备份,即master-slave模式的数据备份。
分享到:
评论

相关推荐

    Redis和Memcache的区别总结

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...

    Redis、Memcache、MongoDB区别

    1、里面包含Redis、MongoDB、Memcache相关的学习文档 2、对这三者有比较详细的应用场景告之,并描述出了三者之间区别 3、提供JAVA连接Redis常见问题的解决方案 4、对MongoDB的特性有专门文档作描述 5、对于新手而言...

    php7.3.~redis和memcache扩展包.rar

    标题中的“php7.3.~redis和memcache扩展包.rar”表明这是一份针对PHP 7.3版本的Redis和Memcache扩展的压缩文件,适用于Windows操作系统。这两个扩展是PHP开发过程中常用的缓存管理工具,对于提升Web应用程序的性能至...

    Redis和memcache缓存基本实现

    Redis和Memcached是两种常用的内存数据存储系统,常被用作高性能、低延迟的缓存解决方案。它们在处理大量数据的快速访问上表现卓越,但各自具有不同的特性和使用场景。 Redis,全称Remote Dictionary Server,它是...

    包含Redis,memcache,encache的NoSQL入门

    本教程将带你入门NoSQL的世界,特别是聚焦于Redis、Memcached和EnCache这三种流行的数据存储系统。 **Redis** 是一个开源的、基于键值对的数据存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合。它...

    选redis还是memcache

    本文将深入分析这两种缓存技术的特点,帮助读者更好地理解它们之间的区别,以及在何种情况下选择哪种技术更为合适。 #### 一、业务需求决定技术选型 业务需求是决定技术选型的关键因素。当业务具备以下特征时,...

    MemCache和Redis缓存介绍

    **MemCache和Redis缓存介绍** 在IT行业中,缓存技术是提高系统性能和响应速度的关键因素之一。MemCache和Redis是两种广泛使用的分布式内存缓存系统,它们能够有效地存储和检索数据,减轻数据库的负担,提升应用的...

    redis&memcache;所需扩展包

    Redis 和 Memcached 是两种常用的内存数据存储系统,广泛应用于缓存和快速数据访问场景。在部署和使用这两种技术时,确保正确安装了相应的扩展包至关重要。以下是对 Redis 和 Memcached 扩展包的详细说明: **Redis...

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

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

    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的比较

    memcache与Redis的比较 ...memcache和Redis都是缓存解决方案,但它们有不同的设计理念和应用场景,Redis支持多种数据类型,持久化和事务等功能,而memcache则提供了简单的key-value存储和cas命令来保证并发访问一致性。

    memcached数据完整迁移到redis

    5. **高可用性**:Redis 的主从复制和哨兵系统提供了故障转移和高可用性解决方案。 **迁移过程** 迁移过程通常分为以下几个步骤: 1. **数据获取**:使用 C# 客户端库(如 EnyimMemcached)连接到 Memcached 服务,...

    centos下自动安装Memcache、Redis服务端以及PHP扩展

    该脚本基于阿里云服务器安装脚本,并只能运用于centos / aliyun os(因为内部使用了yum安装unzip和dos2unix),该脚本使用时,需要与阿里云安装脚本的install.sh放在同一目录下。有缘人切忌乱用

    session共享之memcache Redis

    标题中的“session共享之memcache Redis”指的是在Web开发中如何使用memcache和Redis来实现会话(session)数据的跨服务器共享。会话管理是Web应用中的关键部分,它允许用户在不同页面间保持状态,例如登录信息、...

    php 5.3.13memcache和redis扩展

    相比Memcache,Redis提供了更丰富的数据结构和持久化功能。 1. **安装Redis扩展** - 对于PHP 5.3.13,你需要下载适用于Windows的Redis扩展,如`phpredis`。这个扩展通常包含多个`.dll`文件。 - 把这些文件放到PHP...

    Redis和Memcache对比与如何选择

    Redis 和 Memcache 是两种常用的内存数据存储系统,它们在许多方面有着不同的特性和用途。在选择使用哪个系统时,需要根据具体的业务需求和技术环境来决定。 首先,性能方面,Redis 在处理小数据值时通常在单个核心...

    memtier_benchmark:NoSQL Redis和Memcache流量生成和基准测试工具

    它提供以下内容: 支持Redis和Memcache协议(文本和二进制) 多线程多客户端执行多种配置选项,包括: 阅读:写比率随机和顺序密钥名称模式策略随机或远程密钥到期Redis集群TLS支持...以及更多阅读更多信息:入门...

Global site tag (gtag.js) - Google Analytics