Redis击穿(热点key失效)

Redis击穿是指在高并发情况下,一个键在缓存中过期失效时,同时有大量请求访问该键,导致所有请求都落到数据库上,对数据库造成压力。这种情况下,数据库可能无法及时处理这些请求,导致性能下降甚至崩溃。

为了解决Redis击穿问题,可以考虑以下几种方法:

  1. 设置合理的缓存过期时间:可以根据业务需求和访问模式来设置缓存的过期时间。如果一个键热点访问较高,可以将其过期时间设置为永不过期,或者延长过期时间,减少缓存失效的可能性。

  2. 使用互斥锁:在缓存失效的瞬间,可以使用互斥锁来防止多个线程访问数据库,只允许一个线程去查询数据库并更新缓存。其他线程等待该线程完成后,直接从缓存中获取数据即可。(特点:高一致性

  3. 第二种方案可以设置当前key逻辑过期,大概是思路如下:

    ①:在设置key的时候,设置一个过期时间字段一块存入缓存中,不给当前

    key设置过期时间

②:当查询的时候,从redis取出数据后判断时间是否过期

③:如果过期则开通另外一个线程进行数据同步,当前线程正常返回数据,

这个数据不是最新(特点:高可用

相关推荐
正在走向自律14 小时前
金仓数据库KingbaseES基础语法详解与实践指南
数据库·国产数据库·ddl·dml·kingbasees·sql语法·电科金仓
alonewolf_9914 小时前
MySQL全局优化详解与8.0新特性全面解读
数据库·mysql
雪域迷影14 小时前
Windows11上安装Redis服务和Redis可视化客户端
windows·redis
ASS-ASH14 小时前
快速处理虚拟机磁盘扩容问题
linux·数据库·vmware·虚拟机·磁盘扩容
爱写bug的野原新之助14 小时前
数据库及navicat工具
数据库·网络爬虫·工具
青云交14 小时前
Java 大视界 -- 基于 Java+Redis Cluster 构建分布式缓存系统:实战与一致性保障(444)
java·redis·缓存·缓存穿透·分布式缓存·一致性保障·java+redis clus
数据知道14 小时前
一文掌握 MongoDB 存储引擎 WiredTiger 的原理
数据库·mongodb·数据库架构
Full Stack Developme14 小时前
Mycat 2 实现 MySQL 读写分离,并且实现 主从同步
android·数据库·mysql
我是人✓14 小时前
Spring IOC入门
java·数据库·spring
Hello.Reader14 小时前
PyFlink DataStream 程序骨架、常用 Source/Sink、状态(State)、与 Table/SQL 互转一篇搞定
数据库·sql·linq