Redis击穿(热点key失效)

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

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

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

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

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

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

    key设置过期时间

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

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

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

相关推荐
倔强的石头10619 小时前
深度解析:数据库内核如何通过逻辑推理与常值推导突破去重性能瓶颈
数据库·oracle
为什么不问问神奇的海螺呢丶19 小时前
Oracle database SYSAUX 表空间占用率过高处理方案
数据库·oracle
fengxin_rou19 小时前
【MySQL SQL 执行全链路剖析】:执行计划、慢查询与经典场景优化指南
数据库·sql·mysql
晚烛19 小时前
CANN 数据增强 on NPU:训练数据增强的 NPU 加速实战
人工智能·python·深度学习·缓存·数据挖掘
betazhou19 小时前
LOG_ARCHIVE_DEST_2 ORA-01033: ORACLE initialization or shut
数据库·oracle·oracle19c adg
思诺学长19 小时前
MySQL——数据库并发控制策略: 乐观锁与悲观锁
数据库
fengxin_rou19 小时前
【Spring AI 集成 DeepSeek 实现 AI 摘要与 RAG 问答】:从原理到落地实践
数据库·mysql·rag·deepseek
No8g攻城狮19 小时前
【异常解决】SpringBoot3 + 人大金仓 V8+MyBatis-Plus 获取新增自增 ID
数据库·mybatis·人大金仓·国产信创
鱼听禅19 小时前
CentOS搭建SVN服务器
数据库·postgresql·sqlserver
ylscode20 小时前
微软Edge浏览器启动时停止将已保存的密码加载到内存中
网络·数据库·安全·安全威胁分析