Day06

简介: Day06:掌握Redis常见数据结构(String、Hash、List、Set、Sorted Set、Geospatial),了解AOF与RDB持久化机制及刷盘策略,熟悉缓存雪崩、穿透、击穿的成因与解决方案,并学习MySQL索引优化相关理论。

Day06

每日必会
说下常见的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优化
哪些场景会索引失效
如何定位慢查询
回表
覆盖索引
索引下推


相关文章
|
1天前
|
存储 缓存 Java
自动装配机制
本文深入解析SpringBoot自动装配机制,从@SpringBootApplication注解入手,剖析其组合注解的实现原理。重点讲解@EnableAutoConfiguration如何通过@Import和SpringFactoriesLoader加载自动配置类,结合@ComponentScan、@SpringBootConfiguration等完成组件扫描与注册,实现“零配置”下的自动化装配,提升开发效率。
自动装配机制
|
1天前
|
监控 Java 测试技术
生产环境发布管理
本文介绍大型团队中生产环境的发布管理流程,涵盖从开发到生产的多环境部署策略(DEV→TEST→PRE→PROD),结合自动化CI/CD平台实现分支管理、一键发布与回滚。通过图文详解环境隔离、Jenkins+Docker自动化构建部署、Skywalking日志链路追踪等实践,提升发布效率与系统稳定性。
|
1天前
|
XML Java Maven
3. 打包
本文介绍Java项目打包为可执行JAR文件的流程,包括配置文件处理、Maven打包步骤、运行与停止指令。支持前台/后台运行,并提供分离依赖与配置的打包参考方案。
3. 打包
|
1天前
|
XML Java 数据格式
无标题
`@Configuration` 注解用于标记配置类,相当于 XML 配置文件,配合 `@Bean` 注册 Bean。通过 `AnnotationConfigApplicationContext` 可加载配置类并启动 IOC 容器,实现组件管理。
无标题
|
2天前
|
NoSQL Java 测试技术
5-MongoDB实战演练
本课程以某头条文章评论业务为场景,基于MongoDB实战实现评论的增删改查、按文章ID查询、分页加载及点赞功能。采用SpringDataMongoDB与MongoTemplate优化数据操作,提升性能,并结合索引优化查询效率。
 5-MongoDB实战演练
|
1天前
|
存储 JSON NoSQL
3-MongoDB常用命令
本文介绍MongoDB常用操作命令,涵盖数据库与集合的创建、查看、删除,以及文档的增删改查、分页、排序和统计查询。以文章评论系统为例,演示数据插入、更新、条件查询及投影、分页显示等核心功能,帮助快速掌握MongoDB基本用法。
3-MongoDB常用命令
|
1天前
|
安全 Java 应用服务中间件
3.实现权限管理的技术
本文介绍了实现权限管理的主流技术,对比了Apache Shiro、Spring Security及自定义ACL方案的优缺点。Shiro轻量易用但安全性弱;Spring Security功能强大但配置复杂;自定义ACL灵活但维护成本高,适合特定场景。
|
1天前
|
安全 Java 数据安全/隐私保护
2.通用权限管理模型
本文介绍通用权限管理模型,重点解析ACL(访问控制列表)和RBAC(基于角色的访问控制)的核心概念与表结构关系。涵盖RBAC0-RBAC3的演进,包括角色继承、职责分离等机制,帮助构建系统化权限设计认知。(238字)
|
1天前
|
Web App开发 JavaScript 前端开发
5.跨域处理
本文介绍跨域问题及其解决方案。首先解析跨域的定义及产生原因,接着通过实例演示正常请求与跨域请求的区别,重点讲解CORS(跨域资源共享)机制,并提供三种解决方案:@CrossOrigin注解、全局配置WebMvcConfigurer和自定义Filter拦截器,最后附上完整示例代码地址,便于开发者快速实现跨域处理。
|
1天前
|
JSON Java 数据格式
4. 不定参数入参
本文介绍Java中不定参数的多种入参方式,包括非JSON格式和JSON格式的处理,涵盖@RequestParam、@RequestBody等注解使用,以及封装对象与数据校验实践,提升接口灵活性与可维护性。(238字)