Java八股文:Redis篇

目录


1、Redis的使用场景

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

分布式锁:setnx、redisson

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

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

解决方案

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

面试场景

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

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

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

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

相关推荐
无巧不成书0218几秒前
Java核心技术全景解析:从白皮书到实战踩坑
java·开发语言
Roy_Sashulin2 分钟前
基于AI的Java编程平台
java·开发语言·人工智能·sashulin·deepseek
周万宁.FoBJ7 分钟前
vue源码讲解之 reactive解析(仅proxy部分)
开发语言·javascript·ecmascript
大傻^10 分钟前
Spring AI Alibaba 企业级实战:从0到1构建智能客服系统
java·人工智能·后端·spring·springaialibaba
阿贵---11 分钟前
单元测试在C++项目中的实践
开发语言·c++·算法
贼爱学习的小黄15 分钟前
NC BIP增加按钮
java
短剑重铸之日15 分钟前
《ShardingSphere解读》11 解析引擎:SQL 解析流程应该包括哪些核心阶段?(上)
java·后端·spring·shardingsphere·分库分表
2401_8914821717 分钟前
C++中的事件驱动编程
开发语言·c++·算法
知识分享小能手17 分钟前
Redis入门学习教程,从入门到精通,Redis进阶编程知识点详解(5)
数据库·redis·学习
Javatutouhouduan18 分钟前
Netty进阶指南:基础+中级+高级+架构行业运用+源码分析
java·netty·java面试·网络io·后端开发·java程序员·互联网大厂