【狂神说Java】Redis最新超详细版教程通俗易懂

一、Nosql概述
为什么要用Nosql?
现在是大数据时代,大数据时代一般的数据库无法继续分析处理了!2006年Hadoop。Hadoop是一个由Apache基金会所开发的分布式系统基础架构, 是一个存储系统+计算框架的软件框架。主要解决海量数据存储与计算的问题,是大数据技术中的基石。Hadoop以一种可靠、高效、可伸缩的方式进行数据处理,用户可以在不了解分布式底层细节的情况下,开发分布式程序,用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。
为什么要用Nosql?
单机MySQL

90年代,一个基本的网站访问量不会太大,一个数据库完全足够!
更多使用的静态网页HTML,服务器没有太大压力。
1、数据量太大,一个机器放不下!
2、数据量超过300w,会导致搜索变慢,需要建立索引,一个机器放不下。
3、访问量(读写混合),一个服务器承受不了。
只要出现上述之一,就需要另寻他法。
二、缓存memcaced+mysql+垂直拆分
通过缓存来减轻数据库压力

三、分库分表+水平拆分+mysql集群
本质:数据库(读,写)
MyISAM:表锁
innodb:行锁
慢慢的使用分库分表解决写的压力。Mysql推出了表分区(没有多少人使用),mysql的集群(很好的满足了那个年代的所有需求)
四、如今的年代
mysql等关系型数据库不够用了,数据量很多,变化很快!
有的使用mysql去存储一些较大的文件,如blog、图片等,数据库表会变大,运行效率就会降低,可以寻找一个专门的数据库来进行存储该类信息,来分担mysql的压力。
5、目前一个基本的互联网项目

五、为什么要用NoSQL!
用个人信息,社交网络,地理位置。用户自己产生的数据,用户日志的爆发增长。
这时候我们就需要用Nosql数据库的,Nosql可以很好的处理以上情况。
六、什么是Nosql
Nosql=not only sql
关系型数据库:类似于excel表格,行列
泛指非关系型数据库,随着web2.0诞生,尤其是超大规模的高并发社区。Nosql发展尤为迅速,redis是发展最快,是当下必掌握的技术。
Nosql特点
解耦!
1、方便扩展(数据之间没有关系,很好扩展)
2、大数据量高性能(redis一秒写8w,读11w,)
3、数据类型是多样的,(不需要设计数据库,随取随用)
传统数据库与NoSQL对比
1、传统数据库
-结构化组织
-sql语言
-数据和关系都存在单独的表中
-数据定义语言
-严格的一致性
-基础的事务
2、Nosql
-不仅仅是数据
-没有固定的查询语言
键值对存储,列存储,文档存储、图形数据库(社交关系)
-最终一致性
-cap定理、base (异地多活)初级架构师
-高性能、高可用、高可扩
真正的在公司中实践:
Nosql+关系型数据库
1、商品基本信息(名称、价格、商家信息)
使用关系型数据库,如:mysql(王坚)、orcle解决
2、商品的描述、评价(文字较多)
使用文档型数据库,如MongoDB进行解决
3、图片
分布式文件系统FASTDFS
-淘宝TFS
-Google:GFS
-Hadoop:HDFS
阿里云:oss
4、商品的关键字(搜索)
-搜索引擎 solr elasticsearch
-ISerach:多隆
5、商品的热门的波段信息
-内存数据库
-redis tair、Menache
6、商品的交易、外部支付接口
-三方应用
大型互联网面对的问题:
- 数据类型太多
- 数据源繁多,重构问题
- 数据要改造,大面积改造
解决问题:加一层
NoSQL四大分类
KV键值对
- 新浪:redis
- 美团:redis+Tair
- 阿里、百度:redis+memecache
文档型数据库(bson格式)
- MongoDB(一般必须要掌握)
MongoDB是基于分布式的文件储存数据库,C++编写,主要用于处理大量文档。
MongoDB是介于关系型和非关系型之间的一种数据库。
MongoDB是非关系型数据库中功能最丰富、最像关系型数据库的
- ConthDB
列存储数据库
- HBase
- 分布式文件系统
图形关系数据库
并不是存储图形,放的是关系,比如:朋友圈社交网络,广告推荐。如Neo4j,InfoGrid

redis名为远程字典服务
是一个开源的使用c语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库,并提供多种语言的API。
能实现主从同步。
redis能干嘛?
1、内存存储、持久化、内存是断电即失的,持久化机制(rdb、aof)
2、效率高,可以用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量)
redis默认端口:6379