在高频访问数据库的场景中,我们会在业务层和数据层之间加入一套缓存机制,来分担数据库的访问压力,毕竟访问磁盘 I/O 的速度是很慢的。比如利用缓存来查数据,可能5ms就能搞定,而去查数据库可能需要 50 ms,差了一个数量级。而在高并发的情况下,数据库还有可能对数据进行加锁,导致访问数据库的速度更慢。
分布式缓存我们用的最多的就是 Redis了,它可以提供分布式缓存服务。
一、Redis 缓存
1.1 . Redis 数据丢失
哨兵机制
Redis 可以实现利用哨兵机制实现集群的高可用。那什么十哨兵机制呢?
英文名:sentinel,中文名:哨兵。
集群监控:负责主副进程的正常工作。
消息通知:负责将故障信息报警给运维人员。
故障转移:负责将主节点转移到备用节点上。
配置中心:通知客户端更新主节点地址。
分布式:有多个哨兵分布在每个主备节点上,互相协同工作。
分布式选举:需要大部分哨兵都同意,才能进行主备切换。
高可用:即使部分哨兵节点宕机了,哨兵集群还是能正常工作。
坑: 当主节点发生故障时,需要进行主备切换,可能会导致数据丢失。
(1)异步复制数据导致的数据丢失
主节点异步同步数据给备用节点的过程中,主节点宕机了,导致