ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis(更新中)

2021-05-16 11:59:09  阅读:185  来源: 互联网

标签:缓存 NoSQL 数据库 Redis 更新 MySQL 数据


Redis

文章目录


Redis学习内容

  • nosql 数据模型
  • Nosql 四大分类
  • CAP
  • BASE
  • Redis 入门
  • Redis安装(Window & Linux服务器)
  • 五大基本数据类型
    • String
    • List
    • Set
    • Hash
    • Zset
  • 三种特殊数据类型
    • geo
    • hyperloglog
    • bitmap
  • Redis配置详解
  • Redis持久化
    • RDB
    • AOF
  • Redis 事务操作 ACID(mysql)
  • Redis 实现订阅发布 (消息队列)
  • Redis 主从复制
  • Redis 哨兵模式 (现在公司中所有的集群都用哨兵模式)
  • 缓存穿透及解决方案
  • 缓存击穿及解决方案
  • 缓存雪崩及解决方案
  • 基础API 之 Jedis 详解
  • SpringBoot 集成 Redis 操作
  • Redis 的实践分析

1、Nosql概述

为什么要使用Nosql

我们现在处于2020年,大数据时代;
大数据一般的数据库无法进行分析处理了!2006年 Hadoop
一定要逼着自己学习,这是在这个社会生产的唯一法则。

1、单机MySQL的年代
在这里插入图片描述

90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够。

那个时候,更多的去使用静态网页 Html 服务器根本没有太大的压力。

思考一下,这种情况下:整个网站的瓶颈是什么?

  1. 数据量如果太大,一台机器放不下了。
  2. 数据的索引 (B+Tree),一个机器内存页放不下。(300万就一定要建立索引)
  3. 访问量(读写混合),一个服务器承受不了。

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

2、Memcached (缓存) + MySQL + 垂直拆分(读写分离)

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

发展过程:优化数据结构和索引 --> 文件缓存(IO)–> Memcached(当时最热门的技术)
在这里插入图片描述

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

技术和业务在发展的同时,对人的要求也越来越高。
本质:数据库(读,写)

早年引擎MyISAM:表锁(100万 张三-密码),锁整个用户表,十分影响效率,高并发就会出现严重锁问题


转战Innodb:行锁,每次查询只锁这一行

订单、用户、支付(拆分)
慢慢的就开始使用分库分表来解决写的压力。MySQL在那个年代推出了表分区。这个并没有多少公司使用。MySQL 的集群,很好的满足了那个年代的所有需求。
在这里插入图片描述

4、如今最近的年代

技术爆炸:2010-2020十年之间,世界已经发生了翻天覆地的变化。(定位,也是一种数据,音乐,热榜)
MySQL 等关系型数据库就不够用了,因为数据量很大,变化很快。

MySQL 有的使用它来存储一些比较大的文件,博客,图片。数据库表很大,效率就低。如果有一种数据库专门处理这种数据,MySQL 的压力就会变小。(研究如何处理这些问题)大数据的IO压力下,表几乎没法更改。灰度发布,平滑升级,在最开始时解决。

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

在这里插入图片描述

为什么要用NoSQL

用户的个人信息,社交网络,地址位置。用户自己产生的数据,用户日志等爆发式增长!

这时候我们就需要使用NoSQL数据库,Nosql可以很好的处理以上的情况。

什么是NoSQL

NoSQL

NoSQL = Not Only SQL(不仅仅是SQL)

关系型数据库:表格,行,列(POI)

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

很多的数据类型用户的个人信息,社交网络,地理位置。这些数据类型的存储不需要一个固定的格式。不需要多余的操作就可以横向扩展的。Map<String,Object>使用键值对来控制。

Get Set

NoSQL特点

解耦

  1. 方便扩展(数据之间没有关系,很好扩展)
  2. 大数据量高性能(Redis一秒写8万次,读取11万,NoSQL的缓存记录级,是一种细粒度缓存,性能会比较高)
  3. 数据类型是多样型的(不需要事先设计数据库,随取随用。如果是数据量十分大的表,很多人就无法设计了)
  4. 传统 RDBMS 和 NoSQL

传统的   RDBMS
   结构化组织
   SQL
   数据和关系都存在单独的表中 row col
   数据操作,数据定义语言
   严格的一致性
   基础的事务

Nosql
   不仅仅是数据
   没有固定查询语言
   键值对存储,列存储,文档存储,图形数据库(社交关系)
   最终一致性
   CAP定理 和 BASE理论(异地多活)
   高性能,高可用,高可拓

了解:3V+3高

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

  1. 海量Volume
  2. 多样Variety
  3. 实时Velocity
    大数据时代的3高:主要是对程序的要求
  4. 高并发
  5. 高可拓(随时水平拆分,机器不够了,可以扩展机器来解决)
  6. 高性能(保证用户体验和性能,每周维护)

实践:NoSQL + RDBMS 一起使用才是最强的,阿里巴巴的架构引进。

敏捷开发(Agile): 捷开发以用户的需求进化为核心,是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,把一个大项目分为多个子项目,每个项目相互联系,各个子项目都经过测试,具备可视、可集成和可运行使用的特征。但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发并不追求前期完美的设计、完美编码,而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本。然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

极限编程(ExtremeProgramming): 是一种轻量(敏捷)、高效、低风险、柔性、可预测、科学而且充满乐趣的软件开发方式

  1. 商品的基本信息:名称、价格、商家信息
    关系型数据库就可以解决了; MySQL(组件)/ Oracle(淘宝早年就去IOE了 - 王坚:《阿里云的这群疯子》)

  2. 商品的描述:评论(文字居多)
    文档型数据库中,Redis -> MongoDB

  3. 图片
    分布式文件系统 FastDFS
    淘宝自己的 TFS
    Gooale的 GFS
    Hadoop HDFS
    阿里云的 oss

  4. 商品的关键字(用于搜索)
    搜索引擎 solr elasticsearch
    ISerach:多隆(多了解一些技术大佬)

  5. 商品热门的波段信息
    内存数据库
    Redis、Tair、Memache

  6. 商品的交易,外部的支付接口
    三方应用

要知道,一个简单的网页背后的技术,一定不是大家所想的那么简单。
大型互联网应用问题:

  • 数据类型太多了。
  • 数据源繁多,经常重构。
  • 数据要改造,大面积改造。

UDSL(统一数据服务平台)
在这里插入图片描述


本笔记基于视频:B站狂神说

标签:缓存,NoSQL,数据库,Redis,更新,MySQL,数据
来源: https://blog.csdn.net/SwaeLeeUknow/article/details/116209155

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有