Redis缓存的一些案例

ops/2024/10/11 9:27:01/

1、【案例】缓存被击穿

缓存的key有过期策略,如果恰好在这个时间点对这个Key有大量的并发请求,这些请求发现缓存过期一般都会从后端DB回源数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压挂。

业界常用优化方案有两种

**第一种:**使用分布式锁,保证高并发下,仅有一个线程能回源后端DB。

**第二种:**保证高并发的请求到的Redis key始终是有效的,使用非用户请求回源后端,改成主动回源。一般可以使用异步任务进行缓存的主动刷新。

2、【案例】当心时间复杂度o(n)Redis命令

Redis是单线程的,所以线程安全的。

Redis使用非阻塞IO,并且大部分命令的时间复杂度O(1)。

使用高耗时的命令是非常危险的,会占用唯一的一个线程的大量处理时间,导致所有的请求都被拖慢。

例如:获取所有set集合中的元素 smembers myset,返回指定Hash中所有的member,时间复杂度O(N)。

缓存的Value集合变大,当高并接口请求时,会从Redis读取相关数据,每个请求读取的时间变长,不断的叠加,导致出现热点KEY情况,Redis某个分片处于阻塞,CPU使用率达到100%。

3、【案例】缓存热key

在Redis中,访问频率高的key称为热点key,当某一热点key的请求到Server主机时,由于请求量特别大,导致主机资源不足,甚至宕机,影响正常的服务。

热key问题的产生,有如下两种原因:

  1. 用户消费的数据远大于生产的数据,比如热卖商品或秒杀商品、热点新闻、热点评论等,这些典型的读多写少的场景会产生热点问题。
  2. 请求分片集中,超过单Server的性能极限,比如 固定名称key,哈希落入一台Server,访问量极大的情况,超过Server极限时,就会导致热点Key问题的产生。

那么在实际业务中,如何识别到热点key呢?

  1. 凭借业务经验,进行预估哪些是热key;
  2. 客户端统计收集,本地统计或者上报;
  3. 如果服务端有代理层,可以在代理层进行收集上报;

当我们识别到热key,如何解决热key问题

  1. Redis集群扩容:增加分片副本,均衡读流量;
  2. 进一步对热key进行散列,比如将一个key备份为key1,key2……keyN,同样的数据N个备份,N个备份分布到不同分片,访问时可随机访问N个备份中的一个,进一步分担读流量。
  3. 使用二级缓存,即本地缓存

当发现热key后,将热key对应数据首先加载到应用服务器本地缓存中,减少对Redis的读请求。


http://www.ppmy.cn/ops/104743.html

相关文章

NoSql数据库Redis集群

-----------------第一部分---------------- 一.关系型数据库和Nosql数据库 关系型数据库,是建立在关系模型基础上的数据库,借助于数学思维来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库 NoSQL 数据库&#x…

Linux:深入理解计算机软硬件体系和架构

一、硬件体系 首先我们要知道,我们最常见的计算机(笔记本)以及我们不常见的计算机(服务器)其实本质上都是一堆硬件的结合:cpu、网卡、显卡、内存、磁盘、显示器、键盘…… 但他们并不是毫无章法地放在一起&…

5G Tracking Refernece Signal--简称为TRS追踪参考信号

Tracking Refernece Signal–简称为TRS ,追踪参考信号(注意不是PTRS额!),对PTRS感兴趣的可以参考如下文章: PTRS时间密度与频率密度 TRS在3GPP CSI-RS规范文本中以NZP CSI-RS的一个子类予以定义&#xff…

【数据结构 | 每日一题】图的概念辨析

图的概念辨析 考点分析:我们学习数据结构图的第一小节就是:图的基本概念,我们会发现图的概念非常多且有些概念之间又很像,而对于初学者来说,相比树的概念是不好理解的,很容易搞混,因此做了这么…

消息称华为纯血鸿蒙部分应用采用虚拟机方案

华为预计在11月发布正式版纯血鸿蒙,为了能够适配更多的App,官方也是有了新的解决方案。报道中提到,纯血鸿蒙设备对有些还没上架的应用会使用虚拟机方案过渡。据悉,华为的虚拟机方案作为过渡措施,首先能确保用户在鸿蒙系…

基于yolov8的安全帽反光衣护目镜检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的安全帽、反光衣及护目镜检测系统是一款集成了前沿深度学习与计算机视觉技术的智能监控系统。该系统利用YOLOv8这一尖端的目标检测模型,结合云计算与自动化图像处理技术,实现对工地、化工厂、煤矿等高风险作业区域工作人员安全…

通用文字识别API如何通过Java进行调用?(一)

一、什么是通用文字识别? 通用文字识别又叫通用文字OCR识别,文字识别,文字图片识别,通用文字识别是一种算法识别技术,它能够将图像中的文字转换为可编辑的文本格式,可支持多种类型图片类型。 二、通用文字…

redis内存数据库的专业术语雪崩、击穿、穿透的名词解释

redis作为一个内存数据库,其作用主要体现在可以提供高速的访问处理。 redis在内存层面工作,一个字,快。 这也是redis区别于其他类型数据库的一个主要特点。 与之配合使用的是后端持久化存储数据库,比如结构化的数据库mysql mysql的…