redis和mongodb的区别

如题所述

Redis简介:
支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)
支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。
单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。
支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。
支持简单的事务需求,但业界使用场景很少,并不成熟。
Mogodb简介:
mogodb是一种文档性的数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性(self-describing),呈现分层的树状数据结构。redis可以用hash存放简单关系型数据。
mogodb存放json格式数据。
适合场景:事件记录、内容管理或者博客平台,比如评论系统。
nosq的产品目前很多,架构师的选择导向主要有以下两个因素:
1)适合应用程序的使用场景,比如评论系统用比较适合使用mogodb,而mc也可以实现(应用程序把数据转化成json存入,但是部分数据更新不方便)
2)团队开发比较熟悉的技术,比如一个团队一直在使用mc,因而有限选择mc,而不是redis。
还有中严重的状况,开发团队一直使用mogodb,在适合kv nosq的场景下而继续选择mogodb。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-10-20
总结一:

memcache官方定义

Free & open source, high-performance, distributed memory object caching
system, generic in nature, but intended for use in speeding up dynamic web
applications by alleviating database load.

redis官方定义

Redis is an open source, BSD licensed, advanced key-value store. It is often
referred to as a data structure server since keys can contain strings, hashes,
lists, sets and sorted sets.

版权相同

它们都是使用的bsd协议,使用它的项目可以用于商业用户,不必发布二次修改的代码,可以修改源代码。

数据类型

redis数据类型丰富,支持set liset等类型
memcache支持简单数据类型,需要客户端自己处理复杂对象

持久性

redis支持数据落地持久化存储
memcache不支持数据持久存储

分布式存储

redis支持master-slave复制模式
memcache可以使用一致性hash做分布式

value大小不同

memcache是一个内存缓存,key的长度小于250字符,单个item存储要小于1M,不适合虚拟机使用

数据一致性不同

redis使用的是单线程模型,保证了数据按顺序提交。
memcache需要使用cas保证数据一致性。CAS(Check and
Set)是一个确保并发一致性的机制,属于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作

cpu利用

redis单线程模型只能使用一个cpu,可以开启多个redis进程

总结二:

1.Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
2.Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3.Redis支持数据的备份,即master-slave模式的数据备份。
4.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
我个人认为最本质的不同是Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存

总结三:

redis和memecache的不同在于:

1、存储方式:
memecache
把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
redis有部份存在硬盘上,这样能保证数据的持久性。
2、数据支持类型:
redis在数据支持上要比memecache多的多。
3、使用底层模型不同:
新版本的redis直接自己构建了VM
机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4、运行环境不同:
redis目前官方只支持LINUX
上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

memcache只能当做缓存,cache
redis的内容是可以落地的,就是说跟mongodb有些类似,然后redis也可以作为缓存,并且可以设置master-slave本回答被提问者和网友采纳

redis和mongodb区别
redis和mongodb的区别如下:1、Redis支持多种数据结构,如string(字符串)、list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算);支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;支持通过Replication进行数...

MongoDB和Redis的区别是什么
MongoDB和Redis的区别是什么1、内存管理机制Redis 数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的 LRU 算法删除数据。MongoDB 数据存在内存,由 linux系统 mmap 实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。2、支持的数据结构Redis 支持的数据结构丰富,包括hash、set、li...

mongodb和redis区别是什么?
MongoDB和Redis的主要区别:数据存储方式:MongoDB是一个面向文档的数据库,以类似JSON的BSON格式存储数据。它支持丰富的查询操作,具有高性能的存储和检索能力。MongoDB的数据结构是面向集合的,更适合处理大量非结构化和半结构化数据。Redis则是基于键值对的存储系统。它以数据结构形式存储数据,提供了快速...

redis与mongodb有哪些区别
mongodb是文档式的存储。内存管理机制:Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。MongoDB和mysql一样,只是把索引文件放到内存中。由linux系统mmap实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。 支持的数据结构:Redis支持的数据结构丰富,包括hash...

mongodb和redis的区别
内存管理机制不同:Redis数据全部在内存,定期写入磁盘,当内存不够时,选择指定的LRU算法,定期删除。MongoDB数据存在内存,由Linux的mmap映射文件技术实现。当内存不够时,只将热点数据放入内存,其他数据存在磁盘。mongodb实现语言是 C++ ,协议是BSON、自定义二进制 而redis实现语言是 C\/C++,协议...

mongodb和redis区别是什么?
MongoDB的优势更为突出。在应用性能指标上,MongoDB通常倾向于集群部署,注重高可用性和横向扩展,而Redis则倾向于进程顺序写入,适合简单的主-从模式的集群结构,对数据持久化处理方法也有不同。因此,选择哪个取决于你的具体需求,是需要高效快速的读取速度,还是支持复杂查询的存储能力。

mongodb和redis区别是什么?
就该这么学》Mongodb与Redis应用指标对比 MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式。

NoSQL,浅谈redis与mongoDB的区别
Redis和MongoDB都属于NoSQL阵营,区别于传统的关系型数据库,如MySQL和Oracle,它们采用非结构化数据存储方式。相较于关系型数据库的严格标准和事务ACID特性,Redis的优势在于其高读写性能和灵活的数据模型。无需预设字段,可以存储各种自定义格式,适合大规模数据处理。然而,复杂的查询性能可能不如MongoDB,...

redis和mongodb哪个简单
redis、memcahce 比较相似,但与 mongodb 完全不同,几乎没有可比性。总的来说 redis\/memcache 是基于内存的,讲究的是性能,多用作缓存层,比如说存放session。而 mongodb 是面向文档的,存储的是类似JSON的非结构化数据,查询起来非常方便,开发效率高,比较类似传统SQL关系型数据库。从以下几个维度...

mysql和redis和mongodb的区别?
五,区别总结 数据库类型:Mysql是关系型,Redis是非关系型缓存。作用:Mysql用于持久化存储,Redis用于缓存频繁数据。数据存储:Mysql在磁盘,Redis在内存。数据类型:Mysql支持多种类型,Redis支持字符串、哈希、列表、集合、有序集合。需求:高性能使用Redis,不需高性能使用Mysql。六,是否全部用Redis储存 ...

相似回答