前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

缓存

作者头像
OPice
发布2020-01-02 23:43:21
4180
发布2020-01-02 23:43:21
举报
文章被收录于专栏:D·技术专栏

缓存

  缓存就是将系统或者程序需要的数据存在内存中,以便快速访问,不用重新创建新的实例。减少系统开销提高系统效率。

  常见的缓存场景:

  • 客户端浏览器缓存 —— 减少网站的访问或者静态资源的加载
  • Web服务端缓存 —— 减少应用服务器的请求
  • 应用程序缓存 —— 减少数据库的访问
  • 数据库缓存 —— 减少文件系统的IO
  • 操作系统磁盘缓存 —— 减少磁盘机械操作

缓存的实现

  1. 存储方式 内存:直接使用JVM的内存,比如定义一个对象,Map map = new HashMap(); 自身内存不够,第三方内存型数据库来凑:Redis
  2. 技术方案

问题及解决方案

  • 缓存穿透 描述:访问数据库不存在的数据,不存在的数据缓存中也没有,请求会直接打到DB,造成系统瘫痪。 方案:1、空值缓存 2、BloomFilter 在缓存前加一道屏障,缓存数据库存在的所有Key,不存在的Key直接返回null。
  • 缓存雪崩 描述:如果缓存存储服务挂掉,所有请求会像雪崩一些狂涌到DB造成整个服务Down掉。 方案:保证存储服务的高可用(废话);采用熔断、降级、限流三个方面降低损失。具体实现 —— Hystrix ,预设置一个请求失败率,当某一服务失败率达到预设置的值,将该服务的请求拒绝(熔断);过一段时间,放开一部分请求(限流),重新统计失败率;将拒绝的请求返回预定义的返回值(降级)。
  • 缓存击穿 描述:又叫热点数据集中失效。一般情况下会对缓存的数据加一个过期时间,数据过期之后重新更新缓存数据。当缓存数据失效的时间,有大量请求失效数据。 方案:使用互斥锁,缓存失效时,会向数据库重新读取数据,这时将这条数据上锁,当请求读完数据库更新过缓存后释放,期间所有请求该数据的线程同步等待。
  • 缓存一致性 描述:现象是数据库数据和缓存数据不一致。一般缓存框架会将这部分实现 方案: 自己实现方案思路, 先更新数据库,后删除缓存。 1、更新数据库 2、通过拦截器或者订阅binlog来删除缓存 3、删除失败通过MQ或者retry重试
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缓存
  • 缓存的实现
  • 问题及解决方案
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档