Day06

简介: 本文介绍了Redis常见数据结构(如字符串、哈希、列表、集合等)及其应用场景,解析了AOF与RDB两种持久化机制及刷盘策略,并深入探讨缓存雪崩、穿透、击穿的成因与解决方案,同时涵盖MySQL索引结构、SQL优化等理论知识点。

每日必会

说下常见的Redis数据结构吧

  1. 字符串(String):最基本的数据结构,可以存储字符串、整数或者浮点数。
  2. 哈希(Hash):类似于关联数组,可以存储多个键值对,适合存储对象的属性。
  3. 列表(List):双向链表结构,支持从两端进行元素的插入和删除,适合做队列或者栈。
  4. 集合(Set):无序且不重复的元素集合,支持集合间的交集、并集和差集等操作。
  5. 有序集合(Sorted Set):类似于集合,但每个元素都会关联一个分数,可以按照分数进行排序。
  6. 地理空间索引(Geospatial Index):用于存储地理位置信息的数据结构,支持附近位置的搜索等功能。

Redis的持久化了解吗

了解过的面试官,主要是AOF和RDB,AOF是一种存储命令的持久化方式,可以借助于rewriteaof命令进行重写压缩以提高性能,而RDB存储的是一个二进制文件,两者一般是配合使用的,避免数据丢失。

并且持久化也跟刷盘机制有关,如果是always就不会丢失数据,everysecond最多丢一秒,如果是none交给系统就可能丢的多了。

Redis的三剑客

  1. 缓存雪崩(Cache Avalanche):指在某个时间段内,大量缓存数据同时失效,导致大量请求直接访问数据库,造成数据库压力剧增,甚至引起数据库宕机。缓存雪崩通常是由于缓存数据设置了相同的过期时间,导致在同一时间大量缓存同时失效引起的。

解决方法:可以在设置缓存时,给缓存数据的过期时间增加一个随机值,避免大量缓存同时失效;另外,可以使用热点数据预加载、限流等方式来缓解缓存雪崩的影响。

  1. 缓存穿透(Cache Penetration):指恶意请求或者不存在的数据频繁访问缓存,由于缓存中不存在该数据,每次请求都会直接访问数据库,导致数据库压力增大。

解决方法:可以在缓存中对于不存在的数据设置一个空值,或者使用布隆过滤器等方式来过滤恶意请求,避免直接访问数据库。

  1. 缓存击穿(Cache Breakdown):指针对某一热点数据,由于缓存数据过期或者被删除,导致大量请求直接访问数据库,造成数据库压力增大。

解决方法:可以在缓存失效时,使用互斥锁或者分布式锁来避免大量请求同时访问数据库,同时可以提前异步加载热点数据到缓存中,避免缓存失效时直接访问数据库。

理论专项

  • MySQL
  • 索引数据结构
  • SQL优化
  • 哪些场景会索引失效
  • 如何定位慢查询
  • 回表
  • 覆盖索引
  • 索引下推
相关文章
|
7月前
|
监控 Java 测试技术
OOM排查之路:一次曲折的线上故障复盘
本文记录了一次Paimon数据湖与RocksDB集成服务线上频繁OOM的排查历程。通过分析线程暴增、堆外内存泄漏,最终定位到SDK中RocksDB的JNI内存未释放问题,并借助Flink重构写入链路彻底解决。分享了MAT、NMT、async-profiler等工具的实战经验与排查思路,为类似技术栈提供借鉴。
OOM排查之路:一次曲折的线上故障复盘
|
7月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用中两大关键技术。前者为跨模型标准化通信协议,实现工具与模型解耦;后者是模型调用外部功能的内置机制。二者互补协作,推动AI应用向更开放、灵活、可扩展的方向发展。
|
7月前
|
Java 网络安全 开发工具
[MES]不合格订单接入提醒功能(☆☆☆) 1.代码运行
本文介绍入职后如何快速搭建开发环境并运行项目,包括克隆代码、配置JDK/Maven/Git等工具的求助策略,并模拟真实需求:实现不合格工单超30分钟自动通知(短信/钉钉),涉及Git、Maven、SpringBoot及定时任务技术,提升新人实战能力。
|
7月前
|
自然语言处理 搜索推荐 Java
ES分布式搜索引擎入门
本课程介绍Elasticsearch的核心概念与应用,涵盖倒排索引原理、IK分词器使用及Java Client操作,实现高效全文检索、增删改查、批量导入、查询优化等功能,提升搜索性能与体验。
ES分布式搜索引擎入门
|
7月前
|
安全 算法 Java
第一章 Java基础
本文系统讲解Java核心知识,涵盖基础语法、面向对象、集合类、异常处理、IO流、多线程、JVM原理、反射泛型及Tomcat优化等内容,结合代码示例与底层机制分析,助力深入理解Java编程与性能调优。
 第一章 Java基础
|
7月前
|
canal 关系型数据库 MySQL
微服务原理篇(Canal-Redis)
本课程讲解多数据源同步方案,重点介绍Canal+MQ实现MySQL到Elasticsearch的数据同步机制,涵盖Canal伪装MySQL slave原理、binlog解析、消息顺序性保障,并深入Redis持久化、集群模式、缓存一致性及分布式锁等核心知识点。
 微服务原理篇(Canal-Redis)
|
7月前
|
消息中间件 Java UED
异步消息组件MQ基础
本课程介绍MQ的应用场景及RabbitMQ入门,涵盖同步与异步调用区别、消息队列的解耦与流量削峰作用,学习RabbitMQ收发消息、交换机类型、队列特性及在商城项目中的应用。
异步消息组件MQ基础
|
7月前
|
存储 安全 网络协议
第三章 web阶段
HTTP协议是超文本传输协议,基于TCP实现,规定客户端与服务器间数据通信规则。常见请求方式GET与POST在参数传递、安全性和应用场景上有所不同。RESTful风格通过URL定位资源,请求方式定义操作类型。常见状态码如200(成功)、404(未找到)、500(服务器错误)等。转发在服务端完成,一次请求;重定向由客户端发起,两次请求。Cookie通过Set-Cookie和Cookie头实现会话跟踪,存储于客户端;Session依赖Cookie传递ID,数据存于服务端,更安全但存在集群共享问题。
|
7月前
|
缓存 安全 Java
第五章 Spring框架
Spring的IOC(控制反转)指将对象创建交给容器管理,DI(依赖注入)则实现对象间的依赖关系自动注入。Bean默认单例非线程安全,作用域可设singleton、prototype等,通过注解如@Component、@Autowired等简化配置,AOP实现日志、事务等横切关注点。
|
7月前
|
JSON 前端开发 Java
第六章 SpringMVC框架
Spring MVC核心组件包括DispatcherServlet、HandlerMapping、HandlerAdapter、Handler及ViewResolver,协同完成请求分发、处理与视图渲染。其流程为:请求经DispatcherServlet分发,由HandlerMapping匹配处理器,HandlerAdapter执行Handler并返回ModelAndView,再经ViewResolver解析视图并响应用户。此外,通过拦截器可实现登录校验、参数处理等;异常统一由@RestControllerAdvice和@ExceptionHandler处理
第六章 SpringMVC框架

热门文章

最新文章