如果只有一台Redis服务器,如果服务宕机,客户端会直接请求mysql。如果请求太多,一个失败mysql也会宕机。服务可以继续正常运行。
现在我们明白了为什么需要使用集群,我们来谈谈它们的特点。
一般情况下,主机负责向从机写入数据并同步数据。为了实现读/写分离,从从机查询数据读取。写命令由主机执行,读命令由从机查询。奴隶。
Redis 提供哨兵命令。 Sentinel 是用于监视集群中的Redis 服务器并向每个服务器发送请求的机制。从从机下载命令。选择一位作为主持人。当主机恢复后,主机继续作为主机运行,而之前作为主机的从机作为从机运行。
密钥过期策略
你设置了一个密钥过期时间,但是当这个时间过期后,这些过期的密钥会怎样呢?
处理过期密钥有三种方式:立即删除、延迟删除、定时删除。下面对这三种方法进行解释。
立即删除(高实时) : 到期后执行回调函数,立即释放内存。下次使用密钥时不会立即删除它。它根据记录的状态来决定是否删除,但缺点是占用内存,而且是周期性删除(实时性高):缓存会定期删除所有过期的key进程。
现金渗透
重要的一点是没有缓存或数据库。
每次请求key时,都会先去缓存发现key不存在,然后去数据库发现key不存在。如果发生太多次,数据库就会超载。这种现象称为缓存入侵。
那么有什么解决办法吗?
往缓存中填充一个空对象(如果访问缓存发现不存在,访问数据库发现不存在,则返回一个空对象到缓存中。下次(无空对象)访问时返回对象)。再次访问数据库,返回空对象) 参数验证(与数据库交互较少) 缓存击穿
如果数据库中有数据需要访问,但某个时刻某个热点key过期,出现大量的查询访问,发现缓存中已经没有数据了。当我访问数据库时,它崩溃了。这种现象称为缓存损坏。
那么有什么解决办法吗?
如果访问缓存发现不存在,则适当计算并设置过期时间和锁,避免因过度访问而崩溃。现金雪崩
如果大量热点key过期或者Redis服务失败,就会导致大量请求到达数据库,导致数据库崩溃。
那么有什么解决办法吗?
随机化有效期以避免同时发生故障。 将不同的热点密钥放置在不同的Redis服务上,以检测密钥是否过期。
你需要用你自己的语言来解释Redis总结的这些要点。了解了缓存数据的流程之后,就需要了解为什么Redis的线程模型能够持久化。你需要掌握缓存入侵。缓存崩溃和缓存雪崩的概念和解决方案,以了解关键过期策略。
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。