缓存中常见的概念及解决方案


缓存穿透

1、概念

用户查询数据,在数据库中以及缓存中(redis)都查询不到,导致每次请求来时,缓存(redis)中查询一次,数据库查询一次,最后返回空,每次请求都会有俩次无用的查询,缓存命中率低

2、解决方案

1) 对null值设置缓存,每隔一段时间过期
2) 使用布隆过滤器缓存需要的值,直接过滤 掉找不到值得key

缓存雪崩

1、概念

缓存(redis)服务挂掉,缓存在同一时间发生大面积的实效,请求每次查完数据未能将数据缓存倒数据库中,导致所有的请求都会去查询数据库,造成同一时间数据库的cpu及内存负载过高的问题,甚至宕机。

2、解决方案

1)redis高可用,使用哨兵部署或者集群部署模式,保证缓存服务的高可用
2)为key设置不同的过期时间,让key的过期时间均衡分布,防止同一时间缓存大面积的实效。
3)使用锁和队列,对请求进行异步处理,降低数据库的压力。
4)使用缓存降级策略(使用guava或ehcache等本地缓存 或者对服务访问进行限流、熔断及降级)

缓存击穿

1、概念

某个key非常热点,在不停的坑着大并发,大并发集中对这一个点进行访问,当这个key失效的瞬间,持续的高并发会击破缓存,直接请求数据库,导致数据库的cpu及内存负载过高,甚至宕机。

2、解决方案

1)设置某些热点key的过期时间(延长或者永不过期)
2) mutex key互斥锁

转载于:https://www.cnblogs.com/jakaBlog/p/10759519.html

缓存中常见的概念及解决方案相关推荐

  1. 电商中常见的高并发解决方案

    目录 多级缓存 什么叫多级缓存 多级缓存的实现思路 Redis 缓存同步 MySql 数据 Nginx 限流 什么是限流 常见的限流算法之漏桶算法 nginx 限流的方式 控制速率 控制并发量(连接数 ...

  2. 分布式事务中常见的三种解决方案

    分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...

  3. Java面试中常见的高并发解决方案

    Java面试中常见的高并发解决方案 一般来讲,提高系统应对高并发能力的解决方案可以从以下几个方面入手: (1)高性能服务器 (2)高性能数据库 (3)高效编程语言 (4)高性能web容器 提高数据库性 ...

  4. socket编程中常见的概念问题!

    socket编程一般指的就是网络编程,常见的服务端和客户机都是必不可少的,今天小千就来给大家介绍一下socket编程中常见的概念问题. 一.常见传输协议 1.tcp协议 TCP (Transmissi ...

  5. iOS开发过程中常见错误问题及解决方案

    iOS开发过程中常见错误问题及解决方案 参考文章: (1)iOS开发过程中常见错误问题及解决方案 (2)https://www.cnblogs.com/xjf125/p/9494737.html 备忘 ...

  6. java开发中常见的延时消息解决方案

    前言 延时消息(定时消息)指的在分布式异步消息场景下,生产端发送一条消息,希望在指定延时或者指定时间点被消费端消费到,而不是立刻被消费. 延时消息适用的业务场景非常的广泛,在分布式系统环境下,延时消息 ...

  7. 架构设计工作笔记004---架构中常见的概念积累--随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 1.仓储在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管 ...

  8. 关于MyEcplise中常见的问题和解决方案

    1.问题:严重   The web application  created a ThreadLocal with key of type  and a value of type  but fail ...

  9. 数据仓库常见的概念术语解析

    常见的概念术语解析 一.数仓中常见概念解析 1.实体 2.维度 3.度量 4.粒度 5.口径 6.指标 7.标签 8.自然键 9.持久键 10.代理键 11.退化维度 12.下钻 13.上卷 二.数仓 ...

最新文章

  1. 2020 IEEE冯诺依曼奖得主:Michael Jordan --机器学习领域泰斗级人物
  2. 5c用计算机怎么打,再一次谈谈%5c暴库的利用 -电脑资料
  3. pytorch —— 池化、线性、激活函数层
  4. sql server 内存_SQL Server内存性能指标–第3部分– SQL Server Buffer Manager指标和内存计数器
  5. 解决listview点击item失效
  6. C++调用C#编写的com组件方法
  7. 多线程之线程通信条件Condition
  8. 【系列二之图像处理系列】波形处理(2)
  9. 马踏棋盘(骑士周游问题)
  10. java实现记住密码_java简单实现记住密码功能
  11. 在线画图工具ProcessOn
  12. 一个vue项目同时兼容pc和移动端
  13. 济南“90后”打金女孩:打造有温度的金属
  14. Win10 蓝屏0xc0000098修复
  15. java--吸血鬼数的判断
  16. Android imageview 双击放大缩小手势放大缩小自由滑动
  17. 一种新兴计数方式-视觉计数
  18. 一维码EAN 13简介及其解码实现(zxing-cpp)
  19. 【Python】将多个jpg合并成一个pdf
  20. pageX与offsetX的区别

热门文章

  1. linux文件系统体系结构 和 虚拟文件系统(VFS)
  2. 报错 之 ModuleNotFoundError: No module named ‘setproctitle‘
  3. java,倒置后的顺序为3,2,1_java 程序设计题库
  4. flowable工作流 流程变量_Activiti工作流的应用示例
  5. 电影推荐_亲和性分析_规则提取(数据挖掘入门与实践-实验6)
  6. 8086CPU汇编:一般的标号与直接定址标号
  7. [转] c++的多态(一个接口,多种实现)
  8. Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
  9. php 结果集 json,在PHP中提取JSONP结果集
  10. 对于Array的引用