1、Redis简介

一、NOSQL

1、什么是NOSQL?

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。
指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。

关系型数据库有:MYSQL,ORCALE,DB2等。表格中行与列的关系。

2、为什么要用NOSQL?

2.1 单机MYSQL时代。

   在之前的网站访问的数据量不是很大,一个MYSQL数据完全够用。
MYSQL

2.2 没有NOSQL数据存储的瓶颈

  1. 数据的总量,一个机器存储不下。
  2. 数据的索引(B+ Tree)一个机器的内存放不下时。
  3. 访问量(读写混合)一个实例不能承受。

如果满足了上述1 or 3个条件时,只能对数据库的整体架构进行重构。

3、MermCached(缓存)+ Mysql +垂直拆分 读写分离

   每次读取数据库,都非常的耗时,也比较麻烦。-------解决办法就是利用cache
发展过程: 优化数据库结构和索引----->文件缓存(IO)---->MermCached(当时最热门的技术)

后来,随着访问量的上升,几乎大部分使用MySQL架构的网站在数据库上都开始出现了性能问题,web程序不再仅仅专注在功能上,同时也在追求性能。程序员们开始大量的使用缓存技术来缓解数据库的压力,优化数据库的结构和索引。开始比较流行的是通过文件缓存来缓解数据库压力,但是当访问量继续增大的时候,多台web机器通过文件缓存不能共享,大量的小文件缓存也带了了比较高的IO压力。在这个时候,Memcached就自然的成为一个非常时尚的技术产品。

4、Mysql主从读写分离

   由于Memcached只能缓解读数据库的压力,在一个服务器上的数据库读写,让数据库不堪重负,大部分网站开始使用主从复制技术来达到读写分离,以提高读写性能和读库的可扩展性。

5、分库分表+水平拆分+mysql集群

在主从复制,读写分类的基础上,数据库写入数据开始出现压力,由于MyISAM在写数据的时候会使用表锁,在高并发写数据的情况下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。

ps: 这就是为什么 MySQL 在 5.6 版本之后使用 InnoDB 做为默认存储引擎的原因 – MyISAM 写会锁表,InnoDB有行锁,发生冲突的几率低,并发性能高。

分库分表为现在并发中热门的技术。

二、NOSQL特性

1、特点

方便扩展
大数据量,高性能
数据类型是多样的

2、分类

![来源网络]( https://img-blog.csdnimg.cn/20210125135936491.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzYzNzM2Ng==,size_16,color_FFFFFF,t_70)

3、关系型数据库与非关系型数据库的区别

3.1、关系型数据库

RDBMS(Relational Database Management System)

  1. 高度组织化结构化数据
  2. 结构化查询语言(SQL)
  3. 数据和关系都存储在单独的表中。
  4. 数据操纵语言,数据定义语言
  5. 严格的一致性
  6. 基础事务

关系型数据库事物ACID
原子性(A (Atomicity))
      整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(ROLLBACK)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性(C (Consistency))
     一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。

隔离性(I (Isolation))
     隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

持久性(D (Durability))
     在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

3.2、NOSQL

NOSQL
   代表着不仅仅是SQL
   没有声明性查询语言
   没有预定义的模式
   键 - 值对存储,列存储,文档存储,图形数据库
   最终一致性,而非ACID属性
   非结构化和不可预知的数据

CAP定理:

      CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

      CAP原则是NOSQL数据库的基石。

CAP原理特点:

  • 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
  • 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

关于Redis简介就到这里,如果有错误,请大神帮忙指出,入门不深,还请多多指教。
引用的博客(如有侵权,联系删除)
redis简介
CAP原则

posted @ 2021-11-09 15:37  不起眼的程序员  阅读(70)  评论(0)    收藏  举报