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、分类

来源网络

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  不起眼的程序员  阅读(36)  评论(0编辑  收藏  举报