Memcached, Redis, MongoDB区别
mongodb和memcached不是一个范畴内的东西。mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。mongodb和memcached不存在谁替换谁的问题。
和memcached更为接近的是redis。它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。在我们团队的项目中,一开始用的是memcached,后来用redis替代。
相比memcached:
1、redis具有持久化机制,可以定期将内存中的数据持久化到硬盘上。
2、redis具备binlog功能,可以将所有操作写入日志,当redis出现故障,可依照binlog进行数据恢复。
3、redis支持virtual memory,可以限定内存使用大小,当数据超过阈值,则通过类似LRU的算法把内存中的最不常用数据保存到硬盘的页面文件中。
4、redis原生支持的数据类型更多,使用的想象空间更大。
5、前面有位朋友所提及的一致性哈希,用在redis的sharding中,一般是在负载非常高需要水平扩展时使用。我们还没有用到这方面的功能,一般的项目,单机足够支撑并发了。redis 3.0将推出cluster,功能更加强大。
6. 性能
Redis作者的说法是平均到单个核上的性能,在单条数据不大的情况下Redis更好。为什么这么说呢,理由就是Redis是单线程运行的。
因为是单线程运行,所以和Memcached的多线程相比,整体性能肯定会偏低。
因为是单线程运行,所以IO是串行化的,网络IO和内存IO,因此当单条数据太大时,由于需要等待一个命令的所有IO完成才能进行后续的命令,所以性能会受影响。
简介
MongoDB更类似Mysql,支持字段索引、游标操作,其优势在于查询功能比较强大,擅长查询JSON数据,能存储海量数据,但是不支持事务。
Mysql在大数据量时效率显著下降,MongoDB更多时候作为关系数据库的一种替代。
内存管理机制
Redis数据全部存在内存,定期写入磁盘,当内存不够时,可以选择指定的LRU算法删除数据。
MongoDB数据存在内存,由linux系统mmap实现,当内存不够时,只将热点数据放入内存,其他数据存在磁盘。
支持的数据结构
Redis支持的数据结构丰富,包括hash、set、list等。
MongoDB数据结构比较单一,但是支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。
性能
二者性能都比较高,应该说都不会是瓶颈。
可靠性
二者均支持持久化。
集群
MongoDB集群技术比较成熟,Redis从3.0开始支持集群。
不适用场景
Ø 需要使用复杂sql的操作
Ø 事务性系统
相关文章
- Redis持久化rdb&aof
- 【Mongodb】如何创建mongodb的replica set
- Redis学习(8)-redis持久化
- Redis学习(5)-Jedis(Java操作redis数据库技术)
- Redis学习(3)-redis启动
- 3类数据库的联动:mysql、mongodb、redis
- redis 简单整理——持久化之RDB[十九]
- Redis-Cluster实战--5.使用redis-cli安装
- 前后端项目部署-5, flask+Gunicorn+gevent+supervisor+nginx+redis+mysql+mongodb,docker-compose部署
- redis集群之REDIS CLUSTER
- Redis 客户端管理 输出缓冲区obl、 oll、 omem
- Redis 聊聊主从复制需要注意的几个方面
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)
- Memcache,Redis,MongoDB(数据缓存系统)方案对比与分析
- MongoDB和Redis区别
- 云图说丨带你了解GaussDB(for Redis)双活解决方案
- redis启动报错,需要关闭快照,报错-MISCONF Redis is configured to save RDB snapshots-解决
- 【MongoDB】在windows平台mongodb切片集群(三)
- 011-redis应用-04-布隆过滤器
- ubuntu 安装redis
- Redis源代码分析(十二)--- redis-check-dump本地数据库检測
- centos7 shell 安装docker redis mongodb 等
- Redis-3.2.0集群配置(redis cluster)
- 03-Redis客户端连接Redis服务器(redis.conf 文件配置没有生效导致redis运行报错Error: Connection reset by peer)
- 05-Redis持久化、主从复制
- Redis和数据库的结合
- 【C++ 科学计算】redis-plus-plus:安装用C ++编写的Redis客户端
- Ubuntu 安装redis desktop manager
- redis slave.conf