1.NOSQL概述
1.1什么是NOSQL
1.1.1概念
NoSQL:Not Only SQL 不仅仅是SQL,通常指的是非关系型的数据库。MySQL和Oracle都是属于关系型数据库。
1.1.2非关系数据库存储什么样的数据呢?
答:数据是放在内存中,主要的目的是为了提高查询的速度,放在redis中的数据是经常要查询的数据,而且它是第二份,第一份数据还是放在mysql数据库中,相当于一个缓存。
1.2为什么需要NOSQL
随着互联网的高速崛起,网站的用户群的增加,访问量的上升,传统数据库上都开始出现了性能瓶颈,web程序不再仅仅专注在功能上,同时也在追求性能。所以NOSQL数据库应运而上,具体表现为对如下三高问题的解决:
1.2.1High Performance - 对数据库高并发读写的需求
在同一个时间点,同时有海量的用户并发访问。
往往要达到每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受了。
如天猫的双11,从凌晨0点到2点这段时间,每秒达到上千万次的访问量。
12306春运期间,过年回家买火车抢票的时间,用户不断查询有没有剩余票。
对于普通的BBS网站,往往也存在对高并发写请求的需求,例如网站的实时统计在线用户状态,记录热门帖子的点击次数,投票计数等,因此这是一个相当普遍的需求。
1.2.2Huge Storage - 对海量数据的高效率存储和访问的需求
数据库中数据量特别大,数据库表中每天产生海量的数据。
类似QQ,微信,微博,每天用户产生海量的用户动态,每天产生几千万条记录。对于关系数据库来说,在一张几亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。
1.2.3High Scalability && High Availability- 高可扩展性和高可用性的需求
关系型数据库进行扩展和升级是比较麻烦的一样事,对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移。
非关系型数据库可以通过不断的添加服务器节点来实现扩展,而不需对原有的数据库进行维护。
1.3主流的NOSQL产品
Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
CouchDB 是一个开源的面向文档的数据库管理系统,具有高度可伸缩性,提供了高可用性和高可靠性,CouchDB 是一个 Apache Software Foundation 开源项目。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
2.window版的Redis安装与使用
2.1什么是Redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行10万个请求,读的速度是11万次/s,写的速度是8万次/s 。而MySQL大约在1000次/s左右。且Redis通过提供多种键值数据类型来适应不同场景下的存储需求。
2.2windows版Redis的安装与启动
官网提供了Linux版的Redis下载
Window版的Redis,下载地址如下:
https://github.com/MSOpenTech/redis/tags/
2.3windows版Redis的安装
2.3.1window版Redis的安装
window版的安装及其简单,解压Redis压缩包完成即安装完毕,安装注意事项:
安装目录不要出现中文
目录不要太深
Redis所在的硬盘空间大于20G,会在目录产生一个8G大小文件。
2.3.2Redis的目录文件
2.3.3window版Redis的启动与关闭
启动服务器的方式:直接双击redis-server.exe文件即可
默认端口号:
关闭窗口服务器就关闭了
2.4window版Redis的使用
启动客户端的方式:双击redis-cli.exe文件,自动连接服务器,并且进入命令行窗口
直接点关闭即可,输入quit命令,不支持汉字。如果要使用汉字,要使用第三方客户端软件。或在Java中去访问。