Redis缓存穿透和雪崩
2023-03-26 | Redis缓存穿透
缓存穿透的概念:用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透
Redis主从复制与哨兵模式
2023-03-25 | Redis主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点 (master/leader),后者称为从节点(slave/follower)
数据的复制是单向的,只能由主节点到从节点。 Master以写为主,Slave 以读为主
主从复制,读写分离,实际大多数情况都是读取,这样可以缓解服务器压力
主要作用
- 数据冗余: 主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式
- 故障恢复: 当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余
- 负载均衡: 在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量
- 高可用(集群)基石: 除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础
Redis基本使用
2023-03-23 | Redis一、事务
事务的**四个特性(ACID)**:
- 原子性(Atomicity): 指事务是一个不可分割的最小工作单位,事务中的操作只有都发生和都不发生两种情况(要么同时成功,要么同时失败)
- 一致性(Consistency): 事务必须使数据库从一个一致状态变换到另外一个一致状态
- 隔离性(Isolation): 一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰
- 持久性(Durability): 一个事务一旦提交成功,它对数据库中数据的改变将是永久性的,接下来的其他操作或故障不应对其有任何影响
Redis事务本质是一组命令的集合,顺序执行
一次性、顺序性、排他性,执行一系列的命令
Redis单条命令是保证原子性,但是其事务不保证原子性,没有隔离级别的概念
Nosql简述
2023-03-18 | Redis在单机Mysql时可能出现:
- 数据量太大
- 数据的索引太大
- 访问量,读写混合量太大
进而出现Memcached(缓存)+ Mysql + 垂直拆分(读写分离)
通过多台数据库服务器分配读写的任务分摊压力,使用缓存来保存以提高效率
分库分表 + 水平拆分 + Mysql集群
早年MyISAM:表锁,高并发下会出现锁问题
现今Innodb:行锁
所以通过分库分表来减少写的压力,将读写统一为一个集群,通过多集群分摊压力提高效率
NoSql的出现
用户的各类信息爆发式增长,数据量过多,Mysql等关系型数据库不够用,为了解决这类情况需要用到NoSql数据库