狂feng
Java后端
·2025-04-22
复习第十四天 什么是 Java 的 CAS(Compare-And-Swap)操作? 存在的问题 ABA:通过添加版本解决 单变量 循环开销 你使用过哪些 Java 并发工具类? Semaphore acquire release 信号量 AtomicInteger 原子整形 ReentranLock 可重入锁 CyclicBarrier 循环屏障 循环屏障 wait CountDown 计数器 wait countdown 你了解 Java 线程池的原理吗? 核心参数:核心线程数、最大线程数、存活时间、工作队列、拒绝策略 工作队列: SynchronizedQueue:不使用队列 PriorityQueue: LinkedBlockQueue: ArrayBlockQueue: 拒绝策略: 丢弃抛出异常 直接丢弃 丢弃队头元素 调用者来执行 创建线程池方式: 单个 多个 不设上限 定时任务 偷取任务的 Redis 数据过期后的删除策略是什么? 定期删除:周期性删除100ms,拉取20个键,判断是否有超过25%的键过期,如果是,则继续拉去,总时长不可以超过25ms。缺点CPU占用率高 惰性删除:查找到的时候才删除,缺点:内存泄露 兜底策略 如果内存满了 最近最少使用 最少使用频率 随机删除 最小存活时间的进行删除 不执行删除操作,拒绝 Redis 主从复制的实现原理是什么? 主节点将数据同步给从节点 开始同步 全量同步:psync ?-1 触发全量复制,主节点生成RDB文件发给从节点,从节点根据RDB文件进行重放,主节点将这生成RDB文件之后的数据也发给从节点。 增量同步:主节点和从节点会维护一个长链接,psync 主节点ID offset 主节点从环形缓冲区中取出偏移量后面的数据发给从节点,如果没有,则进行全量复制 Redis 的持久化机制有哪些? RDB:生成内存中的一个快照,以二进制的形式进行存储,适合主从复制,备份等场景 AOF:写入命令的时候追加到AOF文件中,实时性比较高 RDB优点:恢复快,服务器宕机后可以使用其进行恢复 缺点:缺少上一次备份后的数据 AOF优点:缺失数据比较少 缺点:恢复速度比较慢 生成RDB流程 * 先判断是否在生成RDB或者执行AOF重写 * fork一个子进程 * 子进程复制生成RDB文件 * 将新的替换旧的 生成RDB过程中的写入操作 * 使用写时复制技术 * 将要写入数据所在的页进行复制 AOF重写 * fork一个子进程 * 将内存中的键转化为对应的写入命令,写入到AOF文件中 * 主进程仍然将新的请求写入到原来的AOF缓冲区并刷入到原来的AOF文件中 * 主进程还需要将重写期间的命令写入新的AOF文件中 * 新的替换旧的 混合持久化机制 * 先fork一个子进程 * 生成RDB文件 * 将RDB文件添加到AOF的头部,将生成RDB文件期间新增的数据添加到AOF文件中 * 旧的替换新的 * redis7.0做了优化,主进程直接生成增量AOF文件,然后和重写的AOF文件进行合并
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP