1.读写分离的背景

实际的生产环境当中,客户端对数据库的读操作都是直接找redis拿数据的
如果redis缓存里面没有数据,那么就会去找mysql拿数据,并且给redis中缓存一份
redis中的数据有两种情况不能使用:数据过期了或者mysql中的数据更新了 用户读的时候访问redis,用户写的时候访问mysql
实际上读的需求量是很大的,redis刚好是把数据缓存在内存当中,响应速度也快 也可以降低我们后台mysql数据库的压力

一般对于高并发的系统来说,搭建一个健壮的缓存系统是不可避免的。
单机的reids的QPS可能只能上万,如果有再高并发的场景,单机是不能搞定的,就会有它的系统瓶颈。
一般来说缓存是用来支撑高并发读,这时候我们可能就会想到读写分离;
读写分离是用来处理读的并发量大,而写的并发量小的场景。

2.搭建基本的实验环境

主机

功能

172.25.254.1

前端服务器

172.25.254.2

redis缓存器

172.25.254.3

mysql数据库

  • (1)用真机连接三台虚拟机
  • (2)停止server1和server3上面的redis服务


    (3)开启server2上面的redis服务,并且查看redis节点是否为master节点,并且没有slave节点

3.基本读写分离的具体过程如下

(1)在server1上安装前端服务器需要的服务

mysql redis读写速度 mysql redis 读写分离_数据库

yum install -y *

mysql redis读写速度 mysql redis 读写分离_redis_02


mysql redis读写速度 mysql redis 读写分离_mysql redis读写速度_03


mysql redis读写速度 mysql redis 读写分离_mysql redis读写速度_04

(2)在server3上安装数据库

mysql redis读写速度 mysql redis 读写分离_redis_05


(3)在真机上给前端服务器server1传送php脚本

mysql redis读写速度 mysql redis 读写分离_数据_06


(4)编辑查看这个脚本

mysql redis读写速度 mysql redis 读写分离_数据_07


(5)在server3上面开启数据库并且查看

mysql redis读写速度 mysql redis 读写分离_数据_08


(6)在真机上给数据库端server3传送sql脚本

mysql redis读写速度 mysql redis 读写分离_数据库_09


(7)将数据导入数据库

mysql redis读写速度 mysql redis 读写分离_数据_10


(8)再次查看数据库,发现test数据库里面表格和数据了

mysql redis读写速度 mysql redis 读写分离_数据库_11

mysql redis读写速度 mysql redis 读写分离_redis_12


(7)在浏览器里面再次访问发现此时客户端访问到了mysql数据库的信息

因为此时redis数据库里面还没有数据,因此第一次会去找mysql数据库拿数据

mysql redis读写速度 mysql redis 读写分离_数据库_13

mysql redis读写速度 mysql redis 读写分离_mysql redis读写速度_14


(8)在server3上修改数据库里面表格的名称

mysql redis读写速度 mysql redis 读写分离_redis_15


(9)发现redis里面的缓存并没有同步mysql的更新

mysql redis读写速度 mysql redis 读写分离_数据_16