摘要: Redis是单线程的吗 工作线程是单线程的,但是后台还有和IO有关、aof刷盘,释放内存,处理关闭文件的线程 为什么Redis采用单线程还是很快 Redis的数据存储在内存中 没有多线程切换导致的性能损耗 IO多路复用机制,可以一个线程处理多个IO Redis 6.0 之前为什么使用单线程? 因为性 阅读全文
posted @ 2023-09-12 17:12 xiuer211 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Redis五种数据类型 String 数据结构:SDS 应用类型:缓存数据,计数,互斥锁 List 数据结构:压缩列表或者双向链表 应用类型:缓存链表或者作为队列 Hash 数据结构:压缩列表或者哈希表 应用类型:缓存对象 Set 数据结构:整型集合或者哈希表 应用类型:缓存集合,例如好友关系 Zs 阅读全文
posted @ 2023-09-12 17:12 xiuer211 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 混合持久化相关问题 为什么会有混合持久化? 为了解决aof和rdb的缺点,混合模式结合了aof和rdb的优点 aof的优点是生成性能高,缺点是恢复时间慢,rdb的优点是恢复时间快,缺点是快照生成的时机不好把握,频率高影响性能,频率低会丢失很多数据。 为了解决aof和rdb的缺点,就有了混合模式。 混 阅读全文
posted @ 2023-09-12 17:11 xiuer211 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 内存淘汰机制,LFU和LRU的比较和优缺点以及实现方式 Redis 内存满了,会发生什么? 如果redis的内存达到了阈值,会发生内存淘汰,阈值通过配置文件的maxmemory设置 Redis 内存淘汰策略有哪些? 大概分为三类 报错 根据有过期时间淘汰 volatile-random,随机淘汰有过 阅读全文
posted @ 2023-09-12 17:11 xiuer211 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 如何避免缓存雪崩、缓存击穿、缓存穿透? 缓存雪崩是指很多key同一时间过期,可以让缓存不过期或者将失效时间打散 缓存击穿是指热点key过期,可以让缓存不过期或者添加互斥锁,这样只有一个线程访问数据库 缓存穿透是指访问在数据库和缓存都不存在的值,可以通过校验参数来限制非法请求,使用布隆过滤器,缓存空值 阅读全文
posted @ 2023-09-12 17:11 xiuer211 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 如何设计一个缓存策略,可以动态缓存热点数据呢? 热点数据动态缓存的策略总体思路:通过数据最新访问时间来做排名,并过滤掉不常访问的数据,只留下经常访问的数据。 以电商平台场景中的例子,现在要求只缓存用户经常访问的 Top 1000 的商品。具体细节如下: 先通过缓存系统做一个排序队列(比如存放 100 阅读全文
posted @ 2023-09-12 17:10 xiuer211 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 说说常见的缓存更新策略? 有cache aside,read/write through ,write back三种 cache aside 对于写操作,先更新数据库,后删除缓存,对于读操作,先访问缓存,有返回,没有查询数据库再保存到缓存中。 适用于读多写少的场景,不适合写多的场景,因为写多会频繁删 阅读全文
posted @ 2023-09-12 17:10 xiuer211 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 如何理解Spring Boot中的Starters Starters可以理解为启动器,你可以一站式集成 Spring 及其他技术,而不需要到处找示例代码和依赖包。如你想使用 Spring JPA 访问数据库,只要加入 spring-boot-starter-data-jpa 启动器依赖就能使用了。 阅读全文
posted @ 2023-09-11 21:43 xiuer211 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 是@SpringBootApplication 由三个注解组成 @EnableAutoConfiguration :开启自动配置,推测导入的jar包中需要哪些配置,并且加载配置 @SpringBootConfiguration:和@Configuration作用类似,表明自己是一个配置类,不同的是@ 阅读全文
posted @ 2023-09-11 21:41 xiuer211 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 通过application.yml设置spring.profile.active来使用对应的文件。 例如: 通过application.yml设置spring.profile.active=dev 使用对应的application-dev.yaml配置文件,不过application.yml也是有效 阅读全文
posted @ 2023-09-11 21:35 xiuer211 阅读(13) 评论(0) 推荐(0) 编辑