NoSQL日记——Redis,Mongodb,Memcached区别和使用场景

工作中一旦遇到很多数据,高并发,这时就需要用到NoSQL来帮忙,NoSQL主要用到以下三种:Redis,Mongodb,Memcached。下面的表格介绍了他们之间的区别和使用场景。

对比项 Redis Mongodb Memcached
数据存储 Redis的存储格式和Memcache一样,也是Key-Value模式,但是Redis有另外的实现,除了基本的string类型,redis还实现了hash,list,set,zset数据类型 MongoDB的存储格式是文档类型,是一种类型json的格式,这样有机会对某些字段建立索引,可以简单的模仿一下关系型数据库,而且MongoDB确实也有db,table的概念 Memcache的存储格式是Key-Value模式,但是很遗憾的是,Value的格式只能是字符串,这也限制了Memcache的应用范围
安全验证 Redis有权限验证,不过是全局的 Mongo的权限验证类似RBAC,给不同的库建立了不同的账号,并分配账号权限 Memcache没有自己的权限验证,只能通过防火墙等手段限制
数据有效期 Redis可以给key添加过期时间 MongoDB本身其实可以看作是一个数据仓库了,不存在过去时间这一说 Memcache也是可以设置过期时间的,这里推荐使用时间戳来设置
数据持久化 Redis本身支持两种持久化,快照和AOF追加方式 MongoDB先持久化journal再持久化data Memcached,并没有持久化功能,断电就会丢失数据
特色功能 可执行Lua脚本 分片,索引(使用倒排索引),可执行js脚本,单文档事务(2PC) Slab Allocation机制,申请大块内存,分成各种大小的Chunk,大小相同的组成Slab Class
使用场景 适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统 数据模型无法确定;QPS要求高;需要能快速水平扩展;弱事务 动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况

猜你喜欢

转载自blog.csdn.net/qq_32198277/article/details/82699553