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)

相关推荐

  • 使用台湾服务器的好处

    技术使用台湾服务器的好处使用台湾服务器有搭建网站相比其他地区的海外服务器优势还是比较明显的。为方便起见,下面列出了一些好处:实惠的定价 使用台湾服务器,虽然在体验上没有CN2香港直连服务器那么快,但是租用价格远低于您可能

    礼包 2021年10月22日
  • kendall和spearman相关系数的关系(pearson spearman kendall)

    技术pearson, spearman与kendall的关系是什么本篇内容主要讲解“pearson, spearman与kendall的关系是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让

    攻略 2021年12月21日
  • Javascript对象原型是什么

    技术Javascript对象原型是什么本篇内容主要讲解“Javascript对象原型是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Javascript对象原型是什么”吧

    攻略 2021年11月20日
  • 清除ehcache缓存方法(ehcache分布式缓存怎么清除)

    技术如何使用@CacheEvict清除指定下所有缓存这篇文章将为大家详细讲解有关如何使用@CacheEvict清除指定下所有缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年12月25日
  • 舍瑟而作,子路曾皙冉有公西华侍坐实词

    技术舍瑟而作,子路曾皙冉有公西华侍坐实词《子路曾皙冉有公西华侍坐》里面的重点实词如下舍瑟而作:
    1、居则曰:居,闲居,平时在家  
    2、摄乎大国之间:摄,夹、迫近   
    3、加之以师旅:加,加到……上   
    4、比及三年

    生活 2021年10月30日
  • 形容种类多的成语,形容品种多的四字成语有哪些

    技术形容种类多的成语,形容品种多的四字成语有哪些形容种类多的成语   1形容种类多的成语、无穷无尽:穷:完。没有止境,没有限度。   
    2、不可胜举:指无法一一枚举,极言其多。   
    3、眼花缭乱:缭乱:纷乱。看着复杂纷

    生活 2021年10月24日