什么是Nosql

not only sql , 不仅仅是sql,是一项全新的数据库理念,泛指非关系型的数据库。

为什么需要NoSql

解决以下问题:

1 High Performance   对数据库高并发读写的要求

例如电商的秒杀,一瞬间很多人访问仓库。投票计数等等

2 Huge Storage  对海量数据的高效率存储和访问的需求

例如QQ,推特等等,几亿用户,产生的信息量关系型数据库很难应付。

3 High Scalability && High Availability  对数据库的高可拓展性和高可用性的需求

基于web的架构中,数据库是最难进行横向扩展的。当一个应用系统的用户量和访问量与日俱增的时候

你的数据库却没法像WebServer和app Server 那样简单的通过添加更多的硬件和服务结点来扩展性能和负载能力。

NoSql数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其大数据应用难题

主要的数据放在关系型数据库里面,性能提升的数据放在Redis里面

NoSQL数据库的四大分类:

键值对存储数据库:

  • 产品:Redis、Tokyo Cabiner、Voldemort
  • 典型应用:内容缓存,主要用于处理大量数据的高访问负载
  • 数据模型:一系列键值对
  • 优势:快速查询
  • 劣势:存储的数据缺少结构化

列存储数据库:

  • 产品:HBASE
  • 典型应用:分布式的文件系统
  • 数据模型:以列簇式存储,将同一列数据存在一起
  • 优势:查找速度快,可拓展性强,更容易进行分布式扩展
  • 劣势:功能相对局限

文档型数据库:

  • 相关产品:MogoDB
  • 典型应用:web应用(与Key-Value类似,Value是结构化的)
  • 数据模型:一系列键值对
  • 优势:数据结构要求不严格
  • 劣势:查询性能不高,缺乏统一的查询语法

图形数据库:

产品:InfoGrid

典型应用:社交网络

数据模型:图结构

优势:利用图结构相关算法

劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案

NoSQL主流:Redis

Redis:用C语言开发的一个直接操作内存的开源的高性能键值对数据库,它提供多种数据类型来适应不同场景下的存储需求

目前为止Redis支持的键值数据类型如下:

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型

官方测试数据:50个并发执行100000,读的速度是110000次/秒,写的速度是81000次/s.

Redis应用场景:

  • 缓存(数据查询,短连接,新闻内容,商品内容等等)
  • 聊天室的在线好友列表
  • 任务队列(秒杀,抢购,12306等等)
  • 应用排行榜
  • 网站访问统计
  • 数据过期处理(可以精确到毫秒)
  • 分布式集群架构中的session分离

Redis的安装:

Redis的安装包:源码形式提供,.c文件

将.c编译为.o文件 需要安装gcc依赖

将编译后的文件安装在Linux上

等价于 希望在当前系统上安装一个java版本的QQ,而下载到的安装文件是以.java这样的源码形式提供

需要:

下载Gcc :在系统上有JDK(gcc)

编译:通过JDK将源码编译为字节码

安装:编译依赖gcc环境,需要安装gcc

Redis的启动:

1前端模式启动:不推荐

只接短信bin/redis-server,缺点是启动完成后不能进行其他操作,除非用Ctrl+C结束程序,不推荐使用

2 后端启动

redis-cli连上redis服务后,可以在命令行发送命令

ping:测试客户端与Redis的连接是否正常,如果连接正常会受到回复PONG

set/get : 向Redis设置数据、获取数据  set name mary   get name

del:删除指定key的内容  del key1

最新文章

  1. 安装并使用PHPunit
  2. docker不稳定 short running containers with -rm failed to destroy
  3. 模拟登陆115网盘(MFC版)
  4. Java 单链表逆序
  5. STRUCTS 2 UPLOAD
  6. Swift - 网页控件(UIWebView)加载本地数据,文件
  7. Struts2, jquery, select二级联动
  8. Codeforces Round #328 (Div. 2)_A. PawnChess
  9. TensorFlow从1到2(八)过拟合和欠拟合的优化
  10. splay详解(一)
  11. CentOS7 Docker私有仓库搭建及删除镜像 【转】
  12. BindingResult 作用原理
  13. 下载离线VS2017
  14. BZOJ4993 [Usaco2017 Feb]Why Did the Cow Cross the Road II 动态规划 树状数组
  15. 51nod算法马拉松B
  16. 27.Docker集群部署
  17. Duplicate <http> element detected
  18. Microsoft Dynamics CRM2011 Javascript
  19. selenium IDE的基本命令
  20. November 16th 2016 Week 47th Wednesday

热门文章

  1. 【洛谷P3500】TES-Intelligence Test
  2. 涂涂影院APP-免费VIP电影观看「安卓APP」
  3. Linux中常用命令的使用(一)
  4. SI架构设计与实践
  5. spring boot 中的配置文件可以存放的位置
  6. Struts2学习(五)
  7. postman 使用post方式提交参数值
  8. run jumper server
  9. java.lang.ClassCastException: android.app.Application cannot be cast to
  10. freemarker作为PDF模板实现下载功能