首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >缓存穿透

缓存穿透

作者头像
摸鱼的G
发布2023-02-22 11:41:36
发布2023-02-22 11:41:36
4670
举报
文章被收录于专栏:火属性小虫火属性小虫

缓存穿透

当使用错误或者不存在的账号进行登录时,因为账号不存在,所以Redis里不会存入缓存数据,但程序实际上还是会每次都查询数据库,导致数据库压力仍然过大。读写速度越来越慢,甚至宕机,这属于系统漏洞。

看起来,使用了Redis,但实际上这种被错误数据攻击的情况下,Redis失去了缓存的意义,称为缓存穿透。

解决缓存穿透

第一次从数据库查询不到数据时,仍然把这个空结果缓存,不过过期时间一般不超过五分钟。

代码语言:javascript
复制
// 只 new 实例但不设置任何属性,相当于一个空对象
userDO = new UserDO();
redisTemplate.opsForValue().set(userName, userDO, 5, TimeUnit.MINUTES);

当用户第二次访问时,无论账户是否正确,Redis都缓存了数据,避免再次查询数据库。而缓存住的错误账号,因为没有属性值,实际不会执行登录。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存穿透
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档