Java八股文:Redis篇

目录


1、Redis的使用场景

缓存:穿透、击穿、雪崩、双写一致性、数据过期、淘汰策略。

分布式锁:setnx、redisson

2、什么是缓存穿透,怎么解决

缓存穿透:查询一个不存在的数据,MySQL查询不到数据,也不会写入缓存,就会导致每次请求都会查询数据库。

解决方案

  • 缓存空数据:如果查询到的数据为空,则直接存储空值
  • 使用布隆过滤器:检索KEY,如果不存在则直接过滤。

面试场景

面试官:什么是缓存穿透?怎么解决?

候选人:缓存穿透是指查询一个不存在的数据,MySQL查询不到数据,也不会写入缓存,就会导致每次请求都会查询数据库,可能导致数据库挂掉。解决方案的话,我们通常会使用布隆过滤器。

面试官:那你说说什么是布隆过滤器?

候选人:布隆过滤器主要是用于检索元素是否存在于集合中,我们当时使用redission实现的布隆过滤器。其核心就是一个大的位数组,比如100万个0,还有很多哈希函数,每插入一条数据,就用这些哈希函数算出多个位置,把这些位置的值设置为1,查询数据时,用相同的Hash函数再算一遍,如果位置都是1,则元素存在,否则不存在。

相关推荐
古法安卓3 小时前
Android-日志系统源码解析
android·java·android studio
小夏coding4 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进
java·后端
MacroZheng5 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"
java·人工智能·后端
十年Java程序媛6 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套
java·spring boot
xiaoqiMikko7 小时前
有人在搜一个不存在的 Tomcat 版本
java·tomcat
用户31268748772010 小时前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized
java
vipxieliang10 小时前
ValidX vs Apache Commons Validator:功能与性能对比
java·spring boot
SimonKing10 小时前
升级Spring Boot 4后,从 Jackson 2 到 3,到底有哪些变化
java·后端·程序员
吃饱了得干活11 小时前
一篇讲清楚Spring Boot:自动装配、启动器、过滤器、拦截器、设计模式
java·spring boot·后端
lhldsg12 小时前
AI零售系统实战指南:从架构设计到落地部署全解析
java·人工智能·小程序·uni-app·零售