redis学习笔记(二)—redis使用中可能遇到的问题与解决方案(转载)

Redis学习笔记(一)——redis基础与连接池

一、缓存雪崩
在引入redis缓存后,引起了缓存雪崩问题。
由于热点数据的时效性,故需要在给redis设定时限。让redis定时清空,到数据库重新获取。而清空时,所有请求转向MySQL,此时MySQL可能无法承受如此巨大的并发量,可能发生宕机或卡顿现象。
导致缓存雪崩问题的原因:

同一时刻所有数据同时失效 解决措施:数据设置为随机有效期
redis服务器宕机 解决措施:使用多级缓存(设置多台服务器)或搭建redis集群
二、缓存击穿
某一极度热门数据失效,此时请求该数据的所有请求到MySQL。
解决方案:分级缓存、加锁、检查更新、后台刷新
https://blog.csdn.net/sanyaoxu_2/article/details/79472465

三、缓存穿透
大量的请求redis中不存在的数据。如每次请求UUID,则每次都回到数据库中查找。
解决方案:

在数据库中查找数据,放入redis中。
使用布隆过滤器。
布隆过滤器:
表示数据库中所有数据的ID号;
基于布隆算法,会通过一定的错误率来降低内存消耗;
如果布隆过滤器说有,但数据库不一定有;
但如果说没有则一定没有;可以过滤打不分非法请求。

使用互斥分布式锁。
redis集群中的hash一致性算法原理及其作用
hash一致性算法:
一个hash环,这个hash环上有2^32个点
作用:使数据均匀分布各台服务器

3台redis服务器位置
hash(ip+编号) % 2^32

如何保证数据均匀的保存在两台redis服务器上?
hash(key) % 2 == 0 ? redis1 : redis2 缺陷:计算量、数据移动量太大
数据存储位置
hash(key) % 2^32 = value
从该位置顺时针,遇到第一个服务器,就存储在该服务器上。
在这里插入图片描述
使用hash一致性算法解决,当集群中有机器发生变动,不至于发生大量数据移动的问题。利于集群扩展,容错。但可能带来数据倾斜问题
数据倾斜问题:
存储框架的数据倾斜问题:某一服务器存储了大量数据,而其他服务器仅存储了少量数据
计算框架的数据倾斜:某一服务器计算了大量数据,而其他服务器计算少量数据
关于存储框架的数据倾斜问题解决方案:虚拟节点方法
i. redis服务器虚拟成两个节点
ii. 建议:100台redis服务器,需要100-200个虚拟节点,才能有1000-2000个点
在这里插入图片描述
个人学习笔记,转载请注明出处。如有错误还请大佬指正。

原文链接:https://blog.csdn.net/qq_40366738/article/details/107584680?utm_medium=distribute.pc_feed.none-task-blog-cf-4.nonecase&depth_1-utm_source=distribute.pc_feed.none-task-blog-cf-4.nonecase&request_id=5f1ff7279cc79f6252ce48dc

你可能感兴趣的:(redis学习笔记(二)—redis使用中可能遇到的问题与解决方案(转载))