Redis击穿(热点key失效)

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

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

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

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

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

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

    key设置过期时间

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

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

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

相关推荐
赵渝强老师1 分钟前
【赵渝强老师】崖山数据库的联机重做日志文件
数据库·国产数据库·yashandb·崖山数据库
家有娇妻张兔兔12 分钟前
Redis 报错 “MISCONF Redis is configured to save RDB snapshots“?一文讲透根因与根除方案
数据库·redis·故障排查·misconf
迷迭香yy14 分钟前
回测过拟合检测体系从样本内外到组合稳健性评估 IG50免费开源股票数据API接口
服务器·开发语言·数据库·人工智能·python
一嘴一个橘子34 分钟前
SpringDataRedis 操作 redis
java·redis
敲上瘾2 小时前
Redis持久化存储机制:从RDB到AOF再到混合持久化的配置与实践
linux·数据库·redis·缓存
2401_894915535 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
正儿八经的少年10 小时前
布隆过滤器(解决redis缓存穿透步骤之一)
数据库·redis·缓存
xrandzj10 小时前
MySQL8.0 从零通关核心操作手册(Ubuntu实战版)
数据库·mysql
我不会插花弄玉11 小时前
4.数据类型【由浅入深-MySQL】
数据库·mysql
denggun1234511 小时前
yield
前端·数据库·python