Mongodb和Memcached不是一个范畴内的东西。Mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。Mongodb 和 Memcached不存在谁替换谁的问题。
Memcached 和 Redis它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高。
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached 的分布式不是在服务器端实现的,而是在客户端应用中实现的,即通过内置算法制定目标数据的节点,Memcached 的分布式是基于客户端的Key的hash来做均衡,是个伪分布式的系统。
Redis是一个key-value存储系统。和 Memcached 类似,它支持存储的value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与 Memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
1、性能
总体来讲,TPS 方面 Redis 和 Memcache 差不多,要大于 Mongodb。
Redis 支持高并发量,官方宣传支持10万级别的并发读写。
2、操作的便利性
Memcached 数据结构单一(key-value)。
Redis 支持的数据类型更多,数据操作方面,Redis 更好一些,也可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积,同时还提供String、Hash、List、Set和Sorted Set等数据结构的存储。
Mongodb 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
3、内存空间的大小和数据量的大小
Redis 在 2.0 版本后增加了自己的 VM 特性,突破物理内存的限制,可以限定内存使用大小,当数据超过阈值,则通过类似LRU的算法把内存中的最不常用数据保存到硬盘的页面文件中;可以对 key value 设置过期时间(类似 Memcached);Redis一个value最大支持512MB。
Memcached 可以修改最大可用内存,采用 LRU 算法;Memcached单个key-value大小有限,一个value最大只支持1MB。
MongoDB 适合大数据量的存储,依赖操作系统 VM 做内存管理,吃内存也比较厉害,服务不要和别的服务在一起。
4、可靠性(持久化)
Redis 具有持久化机制,可以定期将内存中的数据持久化到硬盘上,Redis 支持(快照、AOF),依赖快照进行持久化,aof 增强了可靠性的同时,对性能有所影响。
Memcached 不支持数据持久化,断电或重启后数据消失,通常用在做缓存,提升性能。
MongoDB 从 1.8 版本开始采用 binlog 方式支持持久化的可靠性。
6、数据一致性(事务支持)
Memcached 在并发场景下,用 cas 保证一致性Redis 事务支持比较弱,只能保证事务中的每个操作连续执行。
MongoDB 不支持事务。
7、数据分析
MongoDB 内置了数据分析的功能(mapreduce),其他不支持。
8、应用场景
Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统;数据量较小的更性能操作和运算,Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。
Memcached:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用 sharding)。
MongoDB:主要解决海量数据的访问效率问题。
总结:
• 没有必要过于关注性能,因为二者的性能都已经足够高了。由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。
• 在内存使用效率上,如果使用简单的key-value存储,Memcached的内存利用率更高。而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。
• 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis。因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
• 当然,最后还得说到你的具体应用需求。Redis相比Memcached来说,拥有更多的数据结构,并支持更丰富的数据操作。通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GET/SET一样高效。所以,如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
- 大小: 99.1 KB
分享到:
相关推荐
Memcached、Redis和MongoDB都是流行的数据库解决方案,它们各自具有不同的特点和应用场景。以下是这三种技术之间的对比分析。 性能: 这三种数据库都具备高TPS(每秒事务处理数),意味着它们都能够处理大量的数据...
高级分布式数据库教程,nosql,mongodb,redis。非常好的分布式教程!
在这个面试专题系列中,我们将聚焦于三个广受欢迎的分布式数据库技术:Memcached、Redis和MongoDB。 1. **Memcached**: - **简介**:Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负载,提升...
以上步骤详细介绍了如何安装Memcached、Redis和MongoDB,并提供了相应的注意事项。安装这些数据库时,请确保按照官方文档或最新的安装指南操作,以避免遇到兼容性或其他技术问题。此外,在生产环境中部署前,建议先...
之前用过redis和MongoDB,但都是没有系统的学习,新公司用到memcached,所以去了解他们的区别和应用场景,方便理解。
标题 "PHP7 NTS X86插件(redis、mongodb、memcached)" 提供了关于这个压缩包的关键信息,即它包含了一系列适用于PHP7、非线程安全(NTS)且基于X86架构的扩展插件。这些插件是针对PHP7环境优化的,特别是针对数据库...
数据库是存储和管理数据的核心工具,本教程涵盖了多个主流的数据库系统,包括MySQL、Oracle、Redis、Mycat、MongoDB以及Memcached。这些数据库在不同的应用场景下各有优势,理解和掌握它们能帮助我们更好地设计、...
Memcached、Redis和MongoDB是三种广泛应用的分布式数据库系统,它们各自有着独特的特性和优势。让我们深入探讨这些技术,以便更好地理解和掌握它们在面试中的关键知识点。 首先,Memcached是一款轻量级的内存对象...
本教程涵盖了五个主流的数据库系统:MySQL、Oracle、Redis、Mycat和MongoDB,以及缓存系统Memcached。让我们逐一探讨它们的基础知识、应用场景以及重要特性。 1. MySQL MySQL是一款开源、关系型数据库管理系统,...
本面试专题系列涵盖了三个主流的分布式数据存储系统:Memcached、Redis和MongoDB,它们各自有着独特的特性和应用场景。 首先,Memcached是一个高性能、分布式的内存对象缓存系统。它主要用于减轻数据库的负载,通过...
https://pan.baidu.com/s/13SBT5pRypTbKdlhBrGobFA
标题中的“canal”的MySQL与“redis/memcached/mongodb”的NoSQL数据实时同步方案,主要涉及了数据库间的数据迁移和实时同步技术。这个话题涵盖了多个关键知识点,包括: 1. **Canal**: Canal是阿里巴巴开源的一个...
6.保证对应关系的简单性:一个mysql表对应一个 redis实例(redis单线程,多实例保证分流不阻塞),关联关系数据交给接口业务 数据:mysql->binlog->MQ->redis(不过期、关闭RDB、AOF保证读写性能) (nosql数据仅用...
【标题】:“php apache mysql memcache redis mongodb”指的是在服务器端构建一套常见的Web开发环境,包括PHP编程语言、Apache HTTP服务器、MySQL数据库管理系统,...:Memcached和Redis...
redis、mongodb、memcached、elasticsearch、zookeeper、ftp、CouchDB、docker、Hadoop 安装 pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ 使用说明 python3 unauthorized-check....
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而`PHP`、`Apache`、`MySQL`、`Memcached`、`Redis`以及`MongoDB`这些技术是实现这一目标的关键组件。让我们逐一深入理解它们的核心知识点。 首先,`PHP`是一...
集成的软件有:Nginx、PHP、MySQL、Redis、Memcached、Sphinx、MongoDB、FileZilla FTP、Xdebug、Zend Guard Loader,Web Apps:phpMyAdmin、SQL Buddy、memcache、MemAdmin、phpRedisAdmin、webgrind、RockMongo 等...