简单的谈几个经常抱团出现的家伙,Redis/Memcache/MongoDb

来源:互联网 发布:草东没有派对知乎 编辑:程序博客网 时间:2024/05/16 09:16

NoSQL

他们都是Nosql( Not Only SQL ),意即”不仅仅是SQL”。相对于关系型数据库,听起来就很酷!
概念就略去不说了,相对于传统的具有ACID特性的关系型数据库,Nosql有自身的优势和缺点

数据存储

  • MongoDB的存储格式是文档类型,是一种类型json的格式,这样有机会对某些字段建立索引,可以简单的模仿一下关系型数据库,而且MongoDB确实也有db,table的概念
  • Memcache的存储格式是Key-Value模式,但是很遗憾的是,Value的格式只能是字符串,这也限制了Memcache的应用范围
  • Redis的存储格式和Memcache一样,也是Key-Value模式,但是Redis有另外的实现,除了基本的string类型,redis还实现了hash,list,set,zset数据类型

安全验证

  • Redis有权限验证,不过是全局的,一号在手,天下我有
  • Mongo的权限验证类似RBAC,给不同的库建立了不同的账号,并分配账号权限
  • Memcache没有自己的权限验证,只能通过防火墙等手段限制

数据有效期

  • Redis可以给key添加过期时间,这里需要注意的是,这个过期时间是针对顶级key的,意味着你不能给list里面某个单独元素或者hash里面的单独字段设置时间
  • Memcache也是可以设置过期时间的,这里推荐使用时间戳来设置,避免30天的那个界限。
  • MongoDB本身其实可以看作是一个数据仓库了,不存在过去时间这一说

数据持久化

  • Redis本身支持两种持久化,快照和AOF追加方式
  • Mem很遗憾,并没有持久化功能,断电就GG
  • MongoDB,你就当他是数据库吧!

特色功能

  • Redis没发现
  • Memcache多用于分布式缓存,通过addserver的方式,将不同的键保存到不同的服务器上面,一台GG也不影响其他的服务器,当然这里面也就存在一个问题,各个服务器的数据不同步
  • MongoDB有很典型的主从复制,现在官方主推副本集