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