Redis

78 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情

Redis

1、Nosql

Nosql概述

我们现在处在什么年代2020年 , 大数据时代;

压力一定会越来越大,适者生存!一定要逼着自己学习,这是在这个社会生产的唯一的发展!

1、 单机的Mysql年代

image-20221114231622595

90年代,一个基本的网站访问连一般不会太大,单个数据库就够了。

那个时候,更多是用html

思考以下问题,这种情况下:

1、 数据量如果太大,一个机器放不下!

2、数据的索引(B+Tree) , 一个机器内存也放不下。

3、访问量(读写混合),一个服务器承受不了~

只要你出现以上三种情况之一,那么你必须要晋级!

2、Memcahed (缓存) + Mysql+垂直拆分

网站80%的情况都是在读,每次都要去查询数据库的话就十分的麻烦!所以说我们希望减轻数据库的压力,我们可以使用缓存来保证效率!

image-20221114232901955

3、分库分表 + 水平拆分 + Mysql集群

image-20221115143748486

4、如今最近的年代

如今信息量井喷式增长,各种各样的数据出现(用户定位数据,图片数据等),大数据的背景下关系型数据库(RDBMS)无法满足大量数据要求。Nosql数据库就能轻松解决这些问题。

目前一个基本的互联网项目

image-20221115145443393

为什么要用NoSQL ?

用户的个人信息,社交网络,地理位置。用户自己产生的数据,用户日志等等爆发式增长! 这时候我们就需要使用NoSQL数据库的,Nosql可以很好的处理以上的情况!

什么是NoSQL

NoSQL

NoSql = Not Only SQL(不仅仅是sql)

关系型数据库:列+行,同一个表下数据的结构是一样的。

非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展。

NoSQL泛指非关系型数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。

Nosql特点

解耦!

  1. 方便扩展(数据之间没有关系,很好扩展!)
  2. 大数据量高性能(Redis一秒可以写8万次,读11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
  3. 数据类型是多样型的!(不需要事先设计数据库,随取随用)
  4. 传统的 RDBMS 和 NoSQL
 传统的 RDBMS(关系型数据库)
 - 结构化组织
 - SQL
 - 数据和关系都存在单独的表中 row col
 - 操作,数据定义语言
 - 严格的一致性
 - 基础的事务
 - ...
 ​
 Nosql
 - 不仅仅是数据
 - 没有固定的查询语言
 - 键值对存储,列存储,文档存储,图形数据库(社交关系)
 - 最终一致性
 - CAP定理和BASE (异地多活) 
 - 高性能,高可用,高扩展
 - ...
 ​

了解:3V + 3高

大数据时代的3V :主要是描述问题

  1. 海量Velume
  2. 多样Variety
  3. 实时Velocity

大数据时代的3高 : 主要是对程序的要求

  1. 高并发
  2. 高可扩
  3. 高性能

真正在公司中的实践:NoSQL + RDBMS 一起使用才是最强的。

阿里巴巴演进分析

image-20221115161025998

 # 商品信息
 - 一般存放在关系型数据库:Mysql,阿里巴巴使用的Mysql都是经过内部改动的。
 
 # 商品描述、评论(文字居多)
 - 文档型数据库:MongoDB
 
 # 图片
 - 分布式文件系统 FastDFS
 - 淘宝:TFS
 - Google: GFS
 - Hadoop: HDFS
 - 阿里云: oss
 
 # 商品关键字 用于搜索
 - 搜索引擎:solr,elasticsearch
 - 阿里:Isearch 多隆
 
 # 商品热门的波段信息
 - 内存数据库:Redis,Memcache
 
 # 商品交易,外部支付接口
 - 第三方应用
 

Nosql的四大分类

KV键值对

  • 新浪:Redis
  • 美团:Redis + Tair
  • 阿里、百度:Redis + Memcache

文档型数据库(bson数据格式):

  • MongoDB(掌握)

    • 基于分布式文件存储的数据库。C++编写,用于处理大量文档。
    • MongoDB是RDBMS和NoSQL的中间产品。MongoDB是非关系型数据库中功能最丰富的,NoSQL中最像关系型数据库的数据库。
  • ConthDB

列存储数据库

  • HBase(大数据必学)
  • 分布式文件系统

图关系数据库

用于广告推荐,社交网络

  • Neo4j、InfoGrid

image-20221115161253706