Redis(一)NoSQL入门及应用场景,NoSQL数据模型,NoSQL数据库分类

一、NoSQL入门及应用场景

NoSQL:即 Not-Only SQL( 泛指非关系型的数据库),作为关系型数据库的补充。

作用:应对基于海量用户海量数据前提下的数据处理问题。

常见 Nosql 数据库:

  • Redis
  • memcache
  • HBase
  • MongoDB

特征:

  • 可扩容,可伸缩
  • 大数据量下高性能
  • 灵活的数据模型
  • 高可用

  2. NoSQL数据库分类

(1)Redis/memcache/MongoDB对比

数据存储

  • 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有很典型的主从复制,现在官方主推副本集

应用场景

  •      Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。
  •      Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
  •    MongoDB:主要解决海量数据的访问效率问题。

其他

  • Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB
  • Memcached只是个内存缓存,对可靠性无要求;而Redis更倾向于内存数据库,因此对对可靠性方面要求比较高
  • 从本质上讲,Memcached只是一个单一key-value内存Cache;而Redis则是一个数据结构内存数据库,支持五种数据类型,因此Redis除单纯缓存作用外,还可以处理一些简单的逻辑运算,Redis不仅可以缓存,而且还可以作为数据库用
  • 新版本(3.0)的Redis是指集群分布式,也就是说集群本身均衡客户端请求,各个节点可以交流,可拓展行、可维护性更强大。
  • MongoDB不支持事务。

(2)Redis介绍

学习Redis目的:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)

特点:

  • 可基于内存亦可持久化
  • 支持存储的value类型相对更多(string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型))
发布了49 篇原创文章 · 获赞 31 · 访问量 2900

猜你喜欢

转载自blog.csdn.net/cjy_lean/article/details/105443076