缓存中常见的概念及解决方案
缓存中常见的概念及解决方案
缓存穿透
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
缓存中常见的概念及解决方案相关推荐
- 电商中常见的高并发解决方案
目录 多级缓存 什么叫多级缓存 多级缓存的实现思路 Redis 缓存同步 MySql 数据 Nginx 限流 什么是限流 常见的限流算法之漏桶算法 nginx 限流的方式 控制速率 控制并发量(连接数 ...
- 分布式事务中常见的三种解决方案
分布式事务中常见的三种解决方案 目录 一.分布式事务前奏 二.柔性事务解决方案架构 (一).基于可靠消息的最终一致性方案概述 (二).TCC事务补偿型方案 (三).最大努力通知型 三.基于可靠消息的最 ...
- Java面试中常见的高并发解决方案
Java面试中常见的高并发解决方案 一般来讲,提高系统应对高并发能力的解决方案可以从以下几个方面入手: (1)高性能服务器 (2)高性能数据库 (3)高效编程语言 (4)高性能web容器 提高数据库性 ...
- socket编程中常见的概念问题!
socket编程一般指的就是网络编程,常见的服务端和客户机都是必不可少的,今天小千就来给大家介绍一下socket编程中常见的概念问题. 一.常见传输协议 1.tcp协议 TCP (Transmissi ...
- iOS开发过程中常见错误问题及解决方案
iOS开发过程中常见错误问题及解决方案 参考文章: (1)iOS开发过程中常见错误问题及解决方案 (2)https://www.cnblogs.com/xjf125/p/9494737.html 备忘 ...
- java开发中常见的延时消息解决方案
前言 延时消息(定时消息)指的在分布式异步消息场景下,生产端发送一条消息,希望在指定延时或者指定时间点被消费端消费到,而不是立刻被消费. 延时消息适用的业务场景非常的广泛,在分布式系统环境下,延时消息 ...
- 架构设计工作笔记004---架构中常见的概念积累--随时更新
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 1.仓储在企业的整个供应链中起着至关重要的作用,如果不能保证正确的进货和库存控制及发货,将会导致管 ...
- 关于MyEcplise中常见的问题和解决方案
1.问题:严重 The web application created a ThreadLocal with key of type and a value of type but fail ...
- 数据仓库常见的概念术语解析
常见的概念术语解析 一.数仓中常见概念解析 1.实体 2.维度 3.度量 4.粒度 5.口径 6.指标 7.标签 8.自然键 9.持久键 10.代理键 11.退化维度 12.下钻 13.上卷 二.数仓 ...
最新文章
- 2020 IEEE冯诺依曼奖得主:Michael Jordan --机器学习领域泰斗级人物
- 5c用计算机怎么打,再一次谈谈%5c暴库的利用 -电脑资料
- pytorch —— 池化、线性、激活函数层
- sql server 内存_SQL Server内存性能指标–第3部分– SQL Server Buffer Manager指标和内存计数器
- 解决listview点击item失效
- C++调用C#编写的com组件方法
- 多线程之线程通信条件Condition
- 【系列二之图像处理系列】波形处理(2)
- 马踏棋盘(骑士周游问题)
- java实现记住密码_java简单实现记住密码功能
- 在线画图工具ProcessOn
- 一个vue项目同时兼容pc和移动端
- 济南“90后”打金女孩:打造有温度的金属
- Win10 蓝屏0xc0000098修复
- java--吸血鬼数的判断
- Android imageview 双击放大缩小手势放大缩小自由滑动
- 一种新兴计数方式-视觉计数
- 一维码EAN 13简介及其解码实现(zxing-cpp)
- 【Python】将多个jpg合并成一个pdf
- pageX与offsetX的区别
热门文章
- linux文件系统体系结构 和 虚拟文件系统(VFS)
- 报错 之 ModuleNotFoundError: No module named ‘setproctitle‘
- java,倒置后的顺序为3,2,1_java 程序设计题库
- flowable工作流 流程变量_Activiti工作流的应用示例
- 电影推荐_亲和性分析_规则提取(数据挖掘入门与实践-实验6)
- 8086CPU汇编:一般的标号与直接定址标号
- [转] c++的多态(一个接口,多种实现)
- Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
- php 结果集 json,在PHP中提取JSONP结果集
- 对于Array的引用