基于Redis缓存数据常见的问题如何解决


1.缓存穿透

1.1 问题描述

缓存穿透是在客户端/浏览器端请求一个不存在的key,这个key在redis中不存在,在数据库中也不存在数据源,每次对此key的请求从缓存获取不到,就会请求数据源。

如使用一个不存在的用户id去访问用户信息,redis和数据库中都没有,多次进行请求可能会压垮数据源

基于Redis缓存数据常见的问题如何解决

1.2 解决方法

一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写入的,缓存不存在,出于容错考虑,查询不到的数据是不会缓存在redis当中,这将导致每次请求不存在的数据都会请求数据库,失去了缓存的意义。

(1)如果一个查询返回的数据为空(不管是数据是否不存在),我们仍然把这个空结果(null)进行缓存,设置空结果的过期时间会很短,最长不超过五分钟

(2)设置可访问的名单(白名单):使用bitmaps类型定义一个可以访问的名单,名单id作为bitmaps的偏移量,每次访问和bitmap里面的id进行比较,如果访问id不在bitmaps里面,进行拦截,不允许访问。

(3)采用布隆过滤器

(4)进行实时的数据监控,发现Redis在命中率急速降低时,排查访问对象和访问数据,设置黑名单。

2.缓存击穿

2.1 问题描述

当用户请求一个存在的key的数据时,此时redis中该key的数据已经过时,此时若有大量并发请求发现缓存过期都会请求数据源加载数据并且缓存到redis当中,这个时候大量的并发可能会把数据库服务压垮。

2.2 解决方法

当某个key的数据被大量请求时,这个key就是热点数据,需要考虑避免“击穿”问题。

(1)预先设置热门数据:在redis高峰访问之前,把一些热门数据提前存入到redis里面,加大这些热门数据key的时长

(2)实时调整:现场监控哪些数据热门,实时调整key的过期时长

(3)使用锁:

  • 就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db。

  • 先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX)去set一个mutex key

  • 当操作返回成功时,再进行load db的操作,并回设缓存,最后删除mutex key;

    DESTOON B2B网站 DESTOON B2B网站

    DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分离,源码开放。模型化的开发思路,可扩展或删除任何功能;创新的缓存技术与数据库设计,可负载千万级别数据容量及访问。 DESTOON B2B网站管理系统是一套完善的B2B(电子商务)行业门户解决方案。系统基于PHP+MySQL开发,采用B/S架构,模板与程序分

    DESTOON B2B网站 648 查看详情 DESTOON B2B网站
  • 当操作返回失败,证明有线程在load db,当前线程睡眠一段时间再重试整个get缓存的方法。

基于Redis缓存数据常见的问题如何解决

3.缓存雪崩

3.1 问题描述

可以对应的数据存在,但是key的数据已经过期(redis缓存过期,会自动删除此key),此时大量的并发请求访问不同的key,即同时大量的访问不同的key,此时key处于过期阶段,便会请求数据库,大量的并发请求会压垮数据库服务器,这种情况被称为缓存雪崩,和缓存击穿的不同是前者是一个key。

基于Redis缓存数据常见的问题如何解决

3.2 解决方法

缓存失效时的雪崩效应对底层系统的冲击非常可怕!

(1) 构建多级缓存架构:

  • nginx缓存 + redis缓存 +其他缓存(ehcache等)

(2) 使用锁或队列:

  • 用加锁或者队列的方式保证来保证不会有大量的线程对数据库一次性进行读写,从而避免失效时大量的并发请求落到底层存储系统上。不适用高并发情况

(3) 设置过期标志更新缓存:

  • 记录缓存数据是否过期(设置提前量),如果过期会触发通知另外的线程在后台去更新实际key的缓存。

(4) 将缓存失效时间分散开:

  • 比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

以上就是基于Redis缓存数据常见的问题如何解决的详细内容,更多请关注其它相关文章!


# 也不  # 营销推广客服人员职责  # 优选账户怎么做营销推广  # 手机怎么进行seo  # 抚顺全网推广营销  # 丰都网站建设团队介绍  # csgo开箱网站靠推广赚钱  # seo需要自己写代码吗  # 如何优化seo文件  # seo养站策略  # 关于网站建设论坛  # redis  # 网站管理系统  # 是一个  # 如何实现  # 网络带宽  # 时长  # 就会  # 解决方法  # 如何解决  # 不存在 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别  易车网官网直达入口 易车网在线登录入口  汽水音乐官网网页版入口 汽水音乐官网网页版在线入口  《异星探险家》古怪的物品作用介绍  Pydantic 中“schema”字段命名冲突的解决方案  Python项目中的条件导入:解决跨模块依赖问题  Golang如何测试结构体方法_Golang reflect方法测试与调用技巧  Python自动化抓取GBGB赛狗比赛结果:日期范围与赛道筛选教程  J*aScript二进制处理_ArrayBuffer与Blob  Linux如何开发轻量级数据服务模块_Linux服务化设计  胃动力不足?试试这5个调理方法  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  PHP与SQL实践:高效实现数据复制与特定列值修改  QQ邮箱PC端登录页面_QQ邮箱网页版登录界面  抖音评论无法发送如何修复 抖音评论功能操作指南  QQ邮箱注册地址 免费获取QQ邮箱账号  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  PSD转AI文件的简单方法  Win10输入法不见了怎么办 Win10找回语言栏图标教程  暴风影音官网正式版_暴风影音手机版官网下载安卓  《星露谷物语》克林特好感度事件介绍  使用Selenium在无头Chrome中交互动态菜单和复选框的策略  iPhone14开启Apple TV遥控设置  知乎APP怎么查看自己被邀请的问题_知乎APP邀请回答记录查看与参与方法  苹果11如何更换iCloud账号_苹果11账号切换的具体步骤  使用jQuery精确检测除指定元素外任意位置的点击事件  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  支付宝登录刷脸不是本人如何解决  使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留  江苏大剧院会员卡购买步骤  秋风萧瑟洪波涌起中的萧瑟指的是什么  如何自定义苹果手机铃声  谷歌浏览器官网地址整理_谷歌浏览器新版直连2026稳定访问  Golang如何实现HTTP请求重试机制_Golang HTTP请求错误处理策略  J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解  J*aScript模拟悬停与点击:自动化网页动态元素交互指南  菜鸟驿站的取件码忘了怎么办 手机快速查询指南  使用Python和NLTK从文本中高效提取名词的实用教程  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  解决Flex容器横向滚动内容截断与偏移问题  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  风车动漫官网首页入口登录 风车动漫在线观看正版地址  12306夜间购票失败? | 查看官方公布的暂停服务公告与应对方案  192.168.1.1路由器后台入口 192.168.1.1默认登录入口  抖音火山版如何进行提现  BunnyStream TUS视频上传指南:解决401认证错误与参数配置  QQ网页版入口导航 QQ网页版在线访问通道  汽水音乐在线听歌网页版 汽水音乐在线听歌网页版入口  《随手记》启用语音备注方法  微信注销后银行卡解绑了吗_微信注销后银行卡解绑状态 

 2023-05-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.