文章目录
一、进阶内容概述:
1. redis 面试题
2. jvm 了解
3. 并发编程线程 重点
4. java进阶 面向对象设计原则设计模式
5. spring框架 重点
6. mysql 重点
7. 分布式微服务架构
8. 面试讲解
二、Redis
非关系型数据库,以键值对形式存储在内存中,支持多种数据类型,支持数据持久化
使用场景:
1. 缓存(mybatis一级二级缓存)访问量大的(秒杀,点赞),修改少的,存储验证码(定时)
2. 计数器(点赞)
3. 排行榜(zst)
4. 数据去重(set)
5. 消息队列(list)排号
6. 分布式锁
a.Redis线程模型
6.0之前是单线程模式的,处理客户端和读写操作是一个线程的
6.0之后是多线程,将客户端链接请求部分采用多线程处理,执行读写命令依然采用单线程(线程安全的)
为什么设计为单线程模型速度也很快
- 基于内存操作:读写都是在内存中进行的
- 底层存储结构是哈希表,通过key计算哈希值,快速定位
- 单线程设计避免线程切换,减小开销
b.Redis持久化
Redis数据存储在内存中有可能数据丢失,所以提供数据持久化机制
两种方式:
RDB方式:是Redis中默认的持久化方式,以快照方式将某一时刻的Redis数据保存到rdb文件中,redis.conf文件中可以配置save规则
AOP方式:以日志形式记录写操作(增删改)命令,恢复数据时,逐行执行命令即可,在配置文件中开启,才可以
c.Redis和Mysql如何保证数据一致
- 当更新完My