Redis:增大并发量的演进过程

前言:

互联网最初,数据仅仅只是单机的mysql就能满足需求,但随着互联网大数据时代的来临,并发量也上升了好几个量级,因此相关高并发的解决方案也随之诞生

一:垂直拆分

主从复制,读写分离思想

注意:无论是垂直拆分还是水平拆分,它仅仅是一种思想

解决方案:Memcached(缓存)+MySQL+垂直拆分

优化数据结构和索引-->文件缓存(I/O)-->Memcached

            

因为网站大多数情况下读操作是占比较大的一部分,所以缓存处理的解决方案非常的适合,因此诞生了读写分离+出从复制;这也是后续提高并发的基础

二,水平拆分

解决方案:分库分表+MySQL集群+水平拆分

解释:就是将原本一个表的数据分成多个,在客户访问时,访问信息也分成多个,去相应表中查,最后和成一个完整的信息返回个客户端

本质:提高并发量的本质就是对读写进行分析

拓展:行锁和表锁

答:当数据量庞大时:如果是表锁,用户搜索一条数据,数据库会把整个表锁上,知道查询出结果后,其他进程才能去访问当前表,而行锁就解决了此问题

  这是MyISAM和Innodb的区别之一

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低;
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高;   

 

三,当今时代

当今时代不仅仅集成的以前的解决方案思想,由于当前并发量十分的庞大,比如热点榜单,要满足实时的高并发的读写操作,此时关系型(ORM)数据库已经不能满足需求了

因此nosql被引进过来,它结构简单(kv键值对),所以能很好的配置orm数据库实现高并发的操作

四,拓展:NoAQL~not only SQL

NoSQL四大基本类型:

  kv键值对:redis

  列存储:HBase

  图存储:Grap

  文档:MongoDB

非关系型数据库,本质(解耦)

优点:

   高扩展性(数据库直接没有关系,扩展方便)

   读写能力强(高并发,一秒能写8万次,读取11万次,NoSQL)

   数据类型是多样型的(不需要事先设计数据库,随去随用)

   没有固定的查寻语言(最常用:get set)

原文地址:https://www.cnblogs.com/CL-King/p/14468495.html