首页 > 其他分享 >面试—如何介绍项目中的多级缓存?

面试—如何介绍项目中的多级缓存?

时间:2023-11-04 23:31:41浏览次数:29  
标签:缓存 保证数据 多级 Redis 面试 本地 一致性 数据

项目中使用的多级缓存也就是 分布式缓存 Redis + 本地缓存 Caffeine,那么令 Caffeine 作为一级缓存,Redis 作为二级缓存,在项目中通过记录数据的访问次数,将热点数据放在 本地缓存,将非热点数据放在 Redis缓存 中,访问流程如下:

请添加图片描述

使用多级缓存的好处在于 Redis 单机每秒可以接收 10w 次的请求,本地缓存比 Redis 缓存可以抗更高数量级的并发,本地缓存可以每秒接收百万的请求,使用两级缓存极大增加访问效率

但是使用多级缓存之后,存在数据一致性问题

  • Redis 缓存和 MySQL 数据不一致:可以使用 延时双删 来保证数据的一致性,如果需要更准确的数据一致性,可以使用 Canal 来监听 MySQL 的 binlog 日志来保证数据的一致性

  • 在分布式环境下,多台应用之间本地缓存以及和 MySQL 之间的数据不一致:可以通过 MQ 来保证数据一致性

    当应用 1 收到请求更新数据库,同时应用 1 更新本地缓存,并且发送更新 MQ 广播消息,让其他的应用也更新本地缓存

如何对热点数据进行存储?

其实就是将数据的访问次数记录起来,当发现访问量非常大,在本地记录一下,可以使用 HashMap 进行存储,记录一下热点数据,再通知所有的服务将热点数据放入到本地缓存中来

本文由博客一文多发平台 OpenWrite 发布!

标签:缓存,保证数据,多级,Redis,面试,本地,一致性,数据
From: https://blog.51cto.com/u_16186397/8186257

相关文章

  • 2023年最强大厂Android面试题库来了,不接受反驳!
    前言上周和部门BP聊天,她说最近在boss上放出一个初级Android岗位,平均每天都能收到300多份简历。Android市场越来越卷,跳槽前做好技术进阶突击,才能稳拿offer。相信有过中、大厂面试经验的小伙伴都知道,中、大厂面试提问都不会是点到为止那么简单,很多面试官会就一个比较基础的问题,一......
  • Java八股面试整理(4)
    34.遇到过异常吗,如何处理?在Java中,可以按照如下三个步骤处理异常:捕获异常将业务代码包裹在try块内部,当业务代码中发生任何异常时,系统都会为此异常创建一个异常对象。创建异常对象之后,JVM会在try块之后寻找可以处理它的catch块,并将异常对象交给这个catch块处理。处理异常在......
  • 每天5道Java面试题(第二天)
    1. JDK和JRE有什么区别?JDK:JavaDevelopmentKit的简称,Java开发工具包,提供了Java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,Java运行环境,为Java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译Java源码的编译器Javac,还包含了很多J......
  • 面试必刷TOP101:20、数组中的逆序对
    题目题解解法一:暴力法importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramnumsint整型一维数组*@returnint整型*/publicintInversePairs(in......
  • java——redis随笔——实战——分布式缓存——哨兵
                                                                           ......
  • java——redis随笔——实战——分布式缓存——主从
                                                                               ......
  • 小程序性能提速大作战:缓存策略助你事半功倍!
    引言:嘿,各位小程序开发小伙伴们,你是不是在优化小程序性能的道路上磕磕绊绊,感觉进展缓慢?别担心,小编今天要和你聊聊小程序性能优化的秘密武器——缓存策略。我们不来搞得太严肃,就是要玩得爽!背景:小程序性能优化的关键之一就是减少不必要的数据请求,缓存策略正是为此而生。我们的目标是......
  • Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存
    写一个特性类,用来做标记[AttributeUsage(AttributeTargets.Method)]//只对方法有效publicclassResourceFilterAttribute:Attribute{}我这里使用了MemoryCache来做缓存,也可以使用字典来做,但一定要加上static,否则字典每一次请求都会new一个实例,缓存的东西就丢了private......
  • java——redis随笔——实战——分布式缓存
    在使用Redis过程中,持久化是一项非常重要的功能,因为如果RedisServer停止工作,所有的数据将全部丢失。 为了避免这种情况的出现,我们需要将Redis中的数据保存在硬盘上,以保证数据不受服务器宕机影响。 Redis提供了两种持久化方式——RDB和AOF。    笔者将会以RDB与AOF......
  • 知名大厂的18道Android面试题曝光,你能回答几道?
    前言最近一位知名大厂的Android技术主管,跟我透露了他们公司的18道超难的Android面试题,有些题小编看了都觉得很刁钻。今天小编给大家来做个剧透,你也可以对应看一下,你能回答出来几题?下面有面试题答案,但是我的建议是先自己思考一下,将自己的答案记下来,再去看答案,对比一下有没有出入,这样......