redis缓存出现异常怎么处理(redis缓存遇到的问题及解决方法)

技术如何解决Redis缓存异常的问题这篇文章将为大家详细讲解有关如何解决Redis缓存异常的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。缓存雪崩缓存雪崩是指缓存同一时间大面积的失

本文将详细说明如何解决Redis缓存中的异常问题。边肖觉得很实用,分享给大家参考。希望你看完这篇文章能有所收获。

00-1010缓存雪崩指的是大面积缓存同时失效,因此后续的请求会落在数据库上,导致数据库在短时间内承受大量请求而崩溃。

解决方案

1.缓存数据的过期时间是随机设置的,以防止大量数据同时过期。

2.当一般并发不是特别大时,最常用的解决方案是锁定和排队。

3.为每个缓存的数据添加相应的缓存标签,记录缓存是否无效,如果缓存标签无效,则更新数据缓存。

缓存雪崩

缓存穿透是指不在缓存或数据库中的数据,导致所有请求都落在数据库上,导致数据库在短时间内因大量请求而崩溃。

解决方案

1.接口层增加检查,如用户认证检查、id为基本检查、id=0的直接拦截;

2.无法从缓存中提取的数据也不会在数据库中提取。此时,键值对也可以写成key-null,缓存有效时间可以设置得短一些,例如30秒(设置太长会使其在正常情况下无法使用)。这样可以防止攻击者反复使用同一个id进行暴力攻击;

3.使用Bloom filter,将所有可能的数据哈希成一个足够大的位图,某个不存在的数据就会被这个位图截获,从而避免了底层存储系统的查询压力。

附加

空间的利用已经到了极致,那就是位图和布隆过滤器。

Bitmap:哈希表就是一个典型的例子。

缺点是位图只能为每个元素记录1位信息。想要完成额外的功能,恐怕只能牺牲更多的空间和时间了。

布隆过滤器(推荐)

即引入k(k1)k(k1)个独立的哈希函数,保证元素权重确定的过程在给定的空间和误判率下完成。

其优点是空间效率和查询时间远超一般算法,缺点是有一定的误识率和删除难度。

布隆过滤器算法的核心思想是使用几种不同的哈希函数来解决“冲突”。

Hash存在冲突(碰撞)问题,同一Hash得到的两个URL的值可能是相同的。为了减少冲突,我们可以引入更多的散列。如果其中一个散列显示一个元素不在集合中,那么这个元素肯定不在集合中。只有当所有Hash函数都告诉我们元素在集合中时,我们才能确定元素存在于集合中。这是布隆过滤器的基本思想。

布隆过滤器通常用于确定一个元素是否存在于一个大数据集中。

00-1010缓存细分是指不在缓存中但存在于数据库中的数据(通常缓存时间到期)。此时由于大量并发用户,在不同时读取数据的情况下读取缓存,同时去数据库获取数据,导致数据库压力瞬间增大,造成压力过大。与缓存雪崩不同,缓存崩溃指的是对同一条数据的并发查询。缓存雪崩指的是对数据库的查询,因为不同的数据已经过时,很多数据找不到。

解决方案

1.设置热点数据永远不会过期。

2.添加互斥,互斥

00-1010缓存预热是指系统上线后,相关缓存数据直接加载到缓存系统中。这样就可以避免用户请求数据时,先查询数据库再缓存数据的问题!用户可以直接查询预先预热的缓存数据!

解决方案

1.直接写一个缓存刷新页面,在线时手动操作;

2.数据量小,可以在项目启动时自动加载;

3.定期刷新缓存;

00-1010当访问次数急剧增加、服务问题(如响应时间缓慢或无响应)或非核心服务影响核心流程的性能时,仍然需要确保服务仍然可用,即使它们对服务有害。系统可以根据一些关键数据自动降级,也可以配置开关实现手动降级。

缓存降级的最终目标是确保核心服务的可用性,即使核心服务已经损坏。而且有些服务是不能降级的(比如加入购物车和结算)。

降级前要梳理一下制度,看能不能用来保帅。从而理清哪些必须保护到死,哪些可以降级;例如,您可以参考日志级别来设置计划:

1.一般:例如,某些服务偶尔会因网络抖动或服务在线而超时,这可能会自动降级;

2.警告:某些服务的成功率在一定时间内波动(例如在95%到100%之间),可以自动或手动降级,并发出警报;

3.错误:比如可用性率低于90%,或者数据库连接池被炸,或者访问次数突然增加到系统能够承受的最大阈值,那么可以根据情况自动降级或者手动降级;

4.严重错误:如因特殊原因数据有误,此时需要紧急手动降级。

服务降级的目的是防止Redis服务失效,导致数据库雪崩问题。因此,对于不重要的缓存数据,您可以

服务降级策略,例如一个比较常见的做法就是,Redis出现问题,不去数据库查询,而是直接返回默认值给用户。

缓存热点key

缓存中的一个Key(比如一个促销商品),在某个时间点过期的时候,恰好在这个时间点对这个Key有大量的并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。

解决方案

对缓存查询加锁,如果KEY不存在,就加锁,然后查DB入缓存,然后解锁;其他进程如果发现有锁就等待,然后等解锁后返回数据或者进入DB查询

关于“如何解决Redis缓存异常的问题”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/149944.html

(0)

相关推荐

  • Kubernates中如何从pod中拷贝文件到宿主机

    技术Kubernates中如何从pod中拷贝文件到宿主机本篇文章为大家展示了Kubernates中如何从pod中拷贝文件到宿主机,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

    攻略 2021年10月21日
  • 抖音刷双击秒刷,如何选择优质的刷赞平台

    技术抖音刷双击秒刷,如何选择优质的刷赞平台抖音的粉丝在哪儿买?怎样可以增加抖音的点赞和粉丝?现在很多人都喜欢抖音短视频,这段时间里,抖音很火,抖音挑战赛开始后,参与人数很多。每个人都在想如何才能拍出高质量的视频,观看量,

    测评 2021年10月21日
  • 古代著名书法家有哪些,我国古代著名书法家故事

    技术古代著名书法家有哪些,我国古代著名书法家故事我国古代著名书法家的故事古代著名书法家有哪些:1、王羲之:相传山阴有一位道士,想求王羲之给他写一本《黄庭经》,但又担心王羲之不肯答应。他打听到王羲之非常喜欢鹅,就特地养了一

    生活 2021年10月28日
  • CentOS7安装Nginx1.13.7

    技术CentOS7安装Nginx1.13.7 CentOS7安装Nginx1.13.7一、安装依赖打开终端安装依赖软件  yum-yinstallgccgcc-c++autoconfautomakema

    礼包 2021年10月28日
  • html中设置背景颜色的语句是(html中设置背景颜色的代码是)

    技术在html中设置背景颜色的代码是什么这篇文章主要为大家展示了“在html中设置背景颜色的代码是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在html中设置背景颜色的

    攻略 2021年12月19日
  • 自己吊顶方法图解,塑料扣板吊顶怎么安装图解

    技术自己吊顶方法图解,塑料扣板吊顶怎么安装图解1、确定吊顶安装位置在安装之前,我们需要先明确它的安装位置以及安装高度,这样在安装时才不会手忙脚乱,才能提高安装效率自己吊顶方法图解。 当我们确定好安装高度后,需要用墨线在四

    生活 2021年10月27日