[{"data":1,"prerenderedAt":65},["ShallowReactive",2],{"article-99":3},{"code":4,"msg":5,"data":6,"count":14},200,"查询成功",{"id":7,"title":8,"keywords":9,"description":10,"category_id":11,"content":12,"body_html":13,"thumb_up":14,"clicks":15,"sort":14,"remark":16,"status":17,"is_open":17,"is_deleted":14,"is_top":14,"is_recommend":14,"create_time":18,"update_time":19,"image_id":20,"url":21,"member_id":14,"cate_name":22,"prev":23,"next":26,"tags":29,"words":41,"read_time":42,"comments":17,"cover":43,"relevant":44},99,"Memcached、MongoDB和Redis的对比区别","Memcached,MongoDB,Redis,数据库","MongoDB 更类似 MySQL，支持字段索引、游标操作，其优势在于查询功能比较强大，擅长查询 JSON 数据，能存储海量数据，但是不支持事务。 Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，支持多种类型的数据结构，可用作数据库，高速缓存和消息队列代理",13,"MongoDB 更类似 MySQL，支持字段索引、游标操作，其优势在于查询功能比较强大，擅长查询 JSON 数据，能存储海量数据，但是不支持事务。 \n\nRedis 是一个开源（BSD许可）的，内存中的数据结构存储系统，支持多种类型的数据结构，可用作数据库，高速缓存和消息队列代理。\n\nMemcached是一个自由开源的，高性能，分布式内存对象缓存系统，具有以下的特点，协议简单，基于libevent的事件处理，内置内存存储方式，memcached不互相通信的分布式\n\n###### 一、内存管理机制\n\nRedis 数据全部存在内存，定期写入磁盘，当内存不够时，可以选择指定的 LRU 算法删除数据。 \n\nMongoDB 数据存在内存，由 linux系统 mmap 实现，当内存不够时，只将热点数据放入内存，其他数据存在磁盘。\n\nMemcache 数据全部存在内存，默认使用SlabAllocation机制管理内存，其主要思想是按照预先规定的大小，将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录，以完全解决内存碎片问题。\n\n###### 二、支持的数据结构\n\nRedis 支持的数据结构丰富，包括hash、set、list等。 \n\nMongoDB 数据结构比较单一，但是支持丰富的数据表达，索引，最类似关系型数据库，支持的查询语言非常丰富。\n\nMemcache数据结构单一\n\n###### 三、数据量和性能\n\nMemcached单进程在32位系统中最大使用内存为2G，若在64位系统则没有限制,这是由于32位系统限制单进程最多可使用2G内存,要使用更多内存，可以分多个端口开启多个Memcached进程 ,\n\n当物理内存够用的时候，Redis>MongoDB>MySQL \n\n当物理内存不够用的时候，Redis和MongoDB都会使用虚拟内存。 \n\n实际上如果Redis要开始虚拟内存，那很明显要么加内存条，要么你换个数据库了。 \n\n但是，MongoDB不一样，只要，业务上能保证，冷热数据的读写比，使得热数据在物理内存中，mmap的交换较少。 \n\nMongoDB还是能够保证性能。\n\n###### 四、性能\n\n都比较高，性能对我们来说应该都不是瓶颈\n\n总体来讲，TPS方面Redis和Memcache差不多，要大于MongoDB\n\n###### 五、可靠性\n\nMongoDB从1.8版本后，采用binlog方式（MySQL同样采用该方式）支持持久化，增加可靠性； \n\nRedis依赖快照进行持久化，AOF增强可靠性，增强可靠性的同时，影响访问性能。\n\nMemcache不支持数据持久化，通常用在做缓存,提升性能； \n\n可靠性上MongoDB优于Redis，Memcache。\n\n###### 六、数据分析\n\nMongoDB内置数据分析功能（mapreduce）；\n\nRedis，Memcache不支持。\n\n###### 七、事务支持情况\n\nRedis 事务支持比较弱，只能保证事务中的每个操作连续执行；\n\nMongoDB不支持事务。\n\nMemcache 在并发场景下，用cas保证一致性\n\n###### 八、集群\n\nMongoDB 集群技术比较成熟，\n\nRedis从3.0开始支持集群。\n\nMemcached虽然能够通过分布式缓存，实现其中Memcached宕掉不会丢失全部缓存数据，但部分数据还是难逃一劫。   我们可以利用Magent代理Memcached实现主从备份来保证缓存数据完好无损，而且Magent还可以作为从继续使用，单大体工作原理如下：\n\n1、Magent每次写数据都会写到主Memcached和从Memcached上，并且向主从Memcached写的算法一样; \n\n2、当主Memcached宕掉，Magent会向从Memcached中读取数据。\n\n3、当主Memcached恢复后，Magent将重新向主Memcached中读取数据；此时由于主Memcached刚刚恢复，其中并无数据，因此导致部分数据无法读取，这也是Magent的一大缺点。\n\n------\n\n**参考**：PHP中文网、CSDN、博客园、知乎等","\u003Cp>MongoDB 更类似 MySQL，支持字段索引、游标操作，其优势在于查询功能比较强大，擅长查询 JSON 数据，能存储海量数据，但是不支持事务。 \u003C\u002Fp>\n\u003Cp>Redis 是一个开源（BSD许可）的，内存中的数据结构存储系统，支持多种类型的数据结构，可用作数据库，高速缓存和消息队列代理。\u003C\u002Fp>\n\u003Cp>Memcached是一个自由开源的，高性能，分布式内存对象缓存系统，具有以下的特点，协议简单，基于libevent的事件处理，内置内存存储方式，memcached不互相通信的分布式\u003C\u002Fp>\n一、内存管理机制\n\u003Cp>Redis 数据全部存在内存，定期写入磁盘，当内存不够时，可以选择指定的 LRU 算法删除数据。 \u003C\u002Fp>\n\u003Cp>MongoDB 数据存在内存，由 linux系统 mmap 实现，当内存不够时，只将热点数据放入内存，其他数据存在磁盘。\u003C\u002Fp>\n\u003Cp>Memcache 数据全部存在内存，默认使用SlabAllocation机制管理内存，其主要思想是按照预先规定的大小，将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录，以完全解决内存碎片问题。\u003C\u002Fp>\n二、支持的数据结构\n\u003Cp>Redis 支持的数据结构丰富，包括hash、set、list等。 \u003C\u002Fp>\n\u003Cp>MongoDB 数据结构比较单一，但是支持丰富的数据表达，索引，最类似关系型数据库，支持的查询语言非常丰富。\u003C\u002Fp>\n\u003Cp>Memcache数据结构单一\u003C\u002Fp>\n三、数据量和性能\n\u003Cp>Memcached单进程在32位系统中最大使用内存为2G，若在64位系统则没有限制,这是由于32位系统限制单进程最多可使用2G内存,要使用更多内存，可以分多个端口开启多个Memcached进程 ,\u003C\u002Fp>\n\u003Cp>当物理内存够用的时候，Redis&gt;MongoDB&gt;MySQL \u003C\u002Fp>\n\u003Cp>当物理内存不够用的时候，Redis和MongoDB都会使用虚拟内存。 \u003C\u002Fp>\n\u003Cp>实际上如果Redis要开始虚拟内存，那很明显要么加内存条，要么你换个数据库了。 \u003C\u002Fp>\n\u003Cp>但是，MongoDB不一样，只要，业务上能保证，冷热数据的读写比，使得热数据在物理内存中，mmap的交换较少。 \u003C\u002Fp>\n\u003Cp>MongoDB还是能够保证性能。\u003C\u002Fp>\n四、性能\n\u003Cp>都比较高，性能对我们来说应该都不是瓶颈\u003C\u002Fp>\n\u003Cp>总体来讲，TPS方面Redis和Memcache差不多，要大于MongoDB\u003C\u002Fp>\n五、可靠性\n\u003Cp>MongoDB从1.8版本后，采用binlog方式（MySQL同样采用该方式）支持持久化，增加可靠性； \u003C\u002Fp>\n\u003Cp>Redis依赖快照进行持久化，AOF增强可靠性，增强可靠性的同时，影响访问性能。\u003C\u002Fp>\n\u003Cp>Memcache不支持数据持久化，通常用在做缓存,提升性能； \u003C\u002Fp>\n\u003Cp>可靠性上MongoDB优于Redis，Memcache。\u003C\u002Fp>\n六、数据分析\n\u003Cp>MongoDB内置数据分析功能（mapreduce）；\u003C\u002Fp>\n\u003Cp>Redis，Memcache不支持。\u003C\u002Fp>\n七、事务支持情况\n\u003Cp>Redis 事务支持比较弱，只能保证事务中的每个操作连续执行；\u003C\u002Fp>\n\u003Cp>MongoDB不支持事务。\u003C\u002Fp>\n\u003Cp>Memcache 在并发场景下，用cas保证一致性\u003C\u002Fp>\n八、集群\n\u003Cp>MongoDB 集群技术比较成熟，\u003C\u002Fp>\n\u003Cp>Redis从3.0开始支持集群。\u003C\u002Fp>\n\u003Cp>Memcached虽然能够通过分布式缓存，实现其中Memcached宕掉不会丢失全部缓存数据，但部分数据还是难逃一劫。   我们可以利用Magent代理Memcached实现主从备份来保证缓存数据完好无损，而且Magent还可以作为从继续使用，单大体工作原理如下：\u003C\u002Fp>\n\u003Cp>1、Magent每次写数据都会写到主Memcached和从Memcached上，并且向主从Memcached写的算法一样; \u003C\u002Fp>\n\u003Cp>2、当主Memcached宕掉，Magent会向从Memcached中读取数据。\u003C\u002Fp>\n\u003Cp>3、当主Memcached恢复后，Magent将重新向主Memcached中读取数据；此时由于主Memcached刚刚恢复，其中并无数据，因此导致部分数据无法读取，这也是Magent的一大缺点。\u003C\u002Fp>\n\u003Chr>\n\u003Cp>\u003Cstrong>参考\u003C\u002Fstrong>：PHP中文网、CSDN、博客园、知乎等\u003C\u002Fp>",0,771,"",1,"2021-04-25 17:37:30","2025-02-08 16:01:26",66,null,"Redis",{"id":24,"title":25},98,"本站点JavaScript相关特效使用方法整理",{"id":27,"title":28},100,"re正则表达式",[30,33,35,38],{"id":31,"name":32},29,"MongoDB",{"id":34,"name":22},76,{"id":36,"name":37},28,"数据库",{"id":39,"name":40},78,"Memcache",1424,3,"https:\u002F\u002Ftp.myong.top\u002Fstorage\u002Farticle\u002F20230407\u002Fe70ad72ca8f855e68e71fb0e124ede5a.jpeg",[45,50,55,60],{"id":46,"title":47,"create_time":48,"description":49},97,"Redis必知必会的知识点","2021-04-22 00:21:51","Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库，并提供多种语言的 API。Redis 通常被称为数据结构服务器，因为值（value）可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。",{"id":51,"title":52,"create_time":53,"description":54},118,"Redis MONITOR 命令详解：实时监控你的 Redis 服务器","2025-10-10 17:33:27","在 Redis 数据库管理中，实时监控命令执行情况是排查问题、分析性能的重要手段。本文将深入解析 `redis-cli -a rafeily MONITOR` 命令的功能、用法及注意事项，帮助你更好地利用这一强大工具。",{"id":56,"title":57,"create_time":58,"description":59},119,"Workerman中Redis异步连接的实现与优化","2025-10-14 20:45:00","在高并发网络应用中，数据库操作往往成为性能瓶颈。特别是在基于Workerman这类事件驱动的PHP框架中，传统的同步Redis连接会阻塞主进程，导致服务响应延迟增加。异步Redis连接通过非阻塞I\u002FO操作，可以显著提高应用性能，充分利用Workerman的并发处理能力。本文将详细分析在Workerman环境中实现Redis异步连接的多种方案，并比较各自的优缺点。",{"id":61,"title":62,"create_time":63,"description":64},149,"被误解的 Redis 单线程：为什么它依然是快如闪电的秘密","2026-05-25 00:04:13","一提起 Redis 的单线程，总有人觉得这是浪费服务器资源的老古董设计。但当你真正理解它的内存操作本质和 I\u002FO 多线程的演进后，你会发现这是一个把“简单”和“安全”发挥到极致的精妙权衡。这篇文章聊聊 Redis 单线程的那些过人之处，以及它真正怕什么",1783431655789]