Redis 面试思路
分布式redis面试思路俩点 高性能 高并发
高性能
1.存储在内存 所以速度快
2. 线程模型 io多路复用 监控多个客户端socket 放入队列里面 只是文件分发机制是单线程的 处理队列中的数据 根据不同类型 分发给不同处理器 后面处理的过程 也是多线程的
3. 内存回收机制 ==定期+懒惰 ==
4. 持久化 rdb快照+aof 增量同步 配置 开启 appendfsync rewrite 压缩aof文件
5.常用数据结构 编码模式
高并发 单机-集群 主从同步
全量复制 初始化阶段 从节点 主动拉取 主节点的 快照 待参数 runid offset 发现 runid没有 全量
增量复制 维护 offset 复制偏移量
加入 哨兵集群 来监控master节点 防止一个误判 多个的话 判断 master节点挂掉 就内部选举出一个领导者 然后进行主从切换
使用log日志记录操作
集群里面如何存数据
- solt 槽位 16384个 平均分配 比如6个redis 3主3从 3个主 就会分配这16384个
写的数据 根据 2.hash 算法 3.取模 对16348 然后判断出 在哪个槽位 然后就到哪个 主
虽然数据只存在 相应槽位的 主 和对应的从
但是 服务集群俩俩通信 集群里面任何一个服务器 其他的也都可以查出来
问题: 双写 不一致 穿透雪崩 并发竞争
双写不一致 弱一致性(最终一致性) 强一致性 (性能不好有锁 违背使用redis)
1:先删缓存在删数据库 那就 延迟双删 数据库操作完在删除一次缓存 至多一次
2: 先删数据库在删缓存
存在删除缓存失败的情况 通过MQ重试发送
1.缓存击穿 1 热门数据 过期永不过期 2 或者 互斥锁 拿到数据 刷新缓存
2.缓存雪崩 大面积失效 1 过期随机 2 或者 互斥锁 3 多级缓存 4 集群
3.缓存穿透 恶意没有的数据请求 1.第一次请求后 设置空缓存 2. 参数校验拦截 3 布隆过滤器
redis分布式锁 分段 CAP
Redis分布式锁核心原理与分段优化
基础实现原理
原子加锁:通过 SET key unique_value NX PX timeout 命令实现原子性加锁,其中 NX 表示键不存在时设置,PX设置过期时间。
唯一标识:unique_value(如UUID)用于区分不同客户端,防止其他线程误删锁。
锁续期:通过“看门狗”机制(守护线程定期续期)解决业务执行时间超过锁超时的问题。
示例代码(Redisson):
分段锁优化
问题背景:高并发场景下(如秒杀),单一锁导致性能瓶颈。
解决方案:
分段加锁:将资源(如库存)拆分为多个段(如100段),每个段独立加锁。
路由算法:通过用户ID哈希取模确定操作的分段(如 hash(user_id) % 100)。
优势:锁粒度细化后,冲突减少,吞吐量提升10-100倍。
RedLock算法
适用场景:Redis集群环境下避免单点故障导致的锁失效。
核心流程:
向多个独立Redis节点(N≥5)依次申请锁;
计算耗时,若超过半数节点加锁成功且总耗时<锁超时时间,则认为成功。
缺点:实现复杂,性能低于单节点锁。
二、CAP原则在分布式锁中的权衡
CAP理论解读
一致性(C):所有节点数据实时一致;
可用性(A):服务始终响应;
分区容错性(P):容忍网络分区故障。
Redis分布式锁的CAP选择
偏向AP:Redis集群默认异步复制,主节点故障时可能丢失锁(但通过RedLock可提升一致性)。
对比Zookeeper:Zookeeper偏向CP(同步提交保证一致性,但牺牲可用性)。
实际应用建议
业务容忍度:若允许短暂不一致(如非金融场景),优先Redis锁;
强一致性需求:使用Zookeeper或数据库锁
相关文章:
Redis 面试思路
分布式redis面试思路俩点 高性能 高并发 高性能 1.存储在内存 所以速度快 2. 线程模型 io多路复用 监控多个客户端socket 放入队列里面 只是文件分发机制是单线程的 处理队列中的数据 根据不同类型 分发给不同处理器 后面处理的过程 也是多线程的 3. 内存回收机制 定期懒惰 …...
蓝桥杯_拔河_java
佬们能不能对思路二提供点建议,一直过不了T_T。 题目 思路 首先感觉有个坑点,就是可以不用把所有学生都选上,但是一定要保证两个部分学生的编号是连续的。比如一共5个人,编号是{1,2,3,4…...
fastapi 实践(三)Swagger Docs
fastapi 实践(一)基础 fastapi 实践(二)异常捕获 fastapi 实践(三)Swagger Docs fastapi Swagger 1. FastAPI 交互式 API 文档2. 故障解决2.1. FastAPI 访问 docs 显示空白/加载失败2.2. Swagger 报错&…...
每日一题力扣3248.矩阵中的蛇c++
3248. 矩阵中的蛇 - 力扣(LeetCode) class Solution { public:int finalPositionOfSnake(int n, vector<string>& commands) {int i 0;int j 0;for (int k0;k<commands.size();k) {if (commands[k] "RIGHT")j;else if (comma…...
ReentranLock手写
ReentranLock手写 整体概述 MiniLock 是一个自定义的锁实现,模拟了 Java ReentrantLock 的公平锁机制。公平锁的核心思想是“先来后到”,即线程按照请求锁的顺序依次获取锁,避免线程饥饿。代码使用了以下关键组件: state: 表示…...
Channel-wise Knowledge Distillation for Dense Prediction论文阅读和
paper:https://arxiv.org/pdf/2011.13256.pdf code:https://github.com/open-mmlab/mmrazor 这篇paper主要是商汤开源的mmrazor中提及在detection有效果,我之前记录的几篇sota文章虽然在各自的paper中在detection领域都有提及有增益&#…...
deepSpeed多机多卡训练服务器之间,和服务器内两个GPU是怎么通信
DeepSpeed 在多机多卡训练时,主要依赖 NCCL 和 PyTorch Distributed 进行通信。具体来说,分为服务器之间和服务器内两种情况: 1. 服务器之间的通信(跨节点通信) DeepSpeed 采用 NCCL(NVIDIA Collective Communications Library)作为主要的通信后端,结合 PyTorch Distr…...
Mysql-经典实战案例(10):如何用PT-Archiver完成大表的自动归档
真实痛点:电商订单表存储优化场景 现状分析 某电商平台订单表(order_info)每月新增500万条记录 主库:高频读写,SSD存储(空间告急)历史库:HDD存储,只读查询 优化目标 …...
centos 7 搭建FTP本地用户
在 CentOS 7 系统上基于本地用户搭建 FTP 服务,可按以下步骤操作: 1. 安装 vsftpd 服务 vsftpd 是一款常用的 FTP 服务器软件,可借助 yum 来安装: bash yum install -y vsftpd2. 启动并设置开机自启 vsftpd 服务 bash systemct…...
HarmonyOS Next~鸿蒙系统功耗优化体系解析:前台交互与后台任务的全场景节能设计
HarmonyOS Next~鸿蒙系统功耗优化体系解析:前台交互与后台任务的全场景节能设计 鸿蒙操作系统(HarmonyOS)凭借其分布式架构与全场景协同能力,在功耗优化领域实现了从用户交互到系统底层的多维度创新。本文从前台用户低…...
混元视频与万相2.1全面对比分析
混元视频与万相2.1全面对比分析(2025版) 一、模型背景与技术定位 混元视频(HunYuan Video) 由腾讯开源,定位为“影视级AI视频生成工具”。核心能力集中在图生视频领域。模型架构基于13B参数规模,强调导演级…...
正则表达式:文本处理的瑞士军刀
正则表达式:文本处理的瑞士军刀 正则表达式(Regular Expression,简称 Regex)是一种用于匹配、查找和操作文本的强大工具。它通过定义一种特殊的字符串模式,可以快速地在文本中搜索、替换或提取符合特定规则的内容。正…...
【负载均衡系列】HAProxy
HAProxy(High Availability Proxy)是一款高性能的 TCP/HTTP 负载均衡器,专注于提供高可用性、灵活性和可靠性。以下是关于HAProxy的详细解析,涵盖其工作原理、工作机制、工作模式等核心方面: 一、HAProxy 工作原理 HAProxy的核心职责是将客户端请求高效、可靠地分发到后…...
设计模式之责任链模式:原理、实现与应用
引言 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者与接收者之间的耦合。责任链模式通过将多个处理对象连接成一条链,使得请求沿着链传递&am…...
20250318在ubuntu20.04中安装向日葵
rootrootrootroot-X99-Turbo:~$ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb rootrootrootroot-X99-Turbo:~$ sudo apt-get install -f rootrootrootroot-X99-Turbo:~$ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 20250318在ubuntu20.04中安装向日葵 2025/3…...
Kotlin的 noinline和crossinline关键字
noinline 顾名思义,noinline的意思就是不内联,这个关键字只能作用于内联高阶函数的某个函数类型的参数上,表明当前的函数参数不参与高阶函数的内联: inline fun fun1(doSomething1: () -> Unit, noinline doSomething2: () -&…...
区块链交易签名相关知识总结
基础概念 签名流程 安全相关问题 实际场景 代码示例 进阶问题 一、基础概念 1. 为什么区块链交易需要签名? 答案: 身份认证:证明交易由私钥持有者发起。 数据完整性:确保交易内容未被篡改。 抗抵赖性:签名者无…...
Spring Boot集成Redis并设置密码后报错: NOAUTH Authentication required
报错信息: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.Redis密码配置确认无误,但是只要使用Redis存储就报这个异常。很可能是因为配置的spring.redis.password没有被读取到。 基本依赖: implementat…...
如何记录Matlab程序运行过程中所占用的最大内存(续)
在上一篇博客中,我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文:如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现,这与实际有非常大的差异。运行如下例子: clear;clc; profile on…...
分布式节点池:群联云防护抗DDoS的核心武器
一、节点池的核心作用与架构设计 1. 全球分布式节点布局 物理层防御: 根据产品文档,群联在全球部署“海量分布式节点”,每个节点具备独立清洗能力,攻击流量被分散至不同区域节点处理。优势:避免传统单节点防护的瓶颈&…...
Java线程池深度解析:从使用到调优
适合人群:Java中级开发者 | 并发编程入门者 | 系统调优实践者 目录 一、引言:为什么线程池是Java并发的核心? 二、线程池核心知识点详解 1. 线程池核心参数与原理 2. 线程池的创建与使用 (1) 基础用法示例 (2) 内置线程池的隐患 3. 线…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)
文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…...
HTML应用指南:利用GET请求获取猫眼电影日票房信息——以哪吒2为例
2025年春节档期,国产动画电影《哪吒之魔童闹海》(以下简称《哪吒2》)以颠覆性的叙事风格与工业化制作水准震撼登场,不仅刷新了中国动画电影的票房纪录,更成为全球影史现象级作品。影片凭借春节档期的爆发式开局、持续5…...
荣耀手机卸载应用商店、快应用中心等系统自带的
1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…...
[AI速读]用持续集成(CI)优化芯片验证环境:Jenkins与EDA工具的实战指南
在芯片验证中,回归测试(Regression Test)是确保设计稳定性的关键步骤。但随着设计复杂度增加,手动管理海量测试用例、分析日志和覆盖率数据变得异常耗时。本文将介绍如何利用持续集成(CI)工具Jenkins,结合EDA验证环境(如Cadence vManager),实现自动化测试与结果分析,…...
苍穹外卖学习笔记
整体概述 1).用户层 本项目中在构建系统管理后台的前端页面,我们会用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。而在构建移动端应用时,我们会使用到微信小程序 2).网关层 Nginx是一个服务器,主要用来作为Http服务器&…...
Spring常用注解汇总
1. IOC容器与Bean管理 注解说明示例Component通用注解,标记类为Spring Bean Component public class MyService { ... } Controller标记Web控制器(应用在MVC的控制层) Controller public class UserController { ... } Service标记业务逻辑层…...
深度强化学习中的深度神经网络优化策略:挑战与解决方案
I. 引言 深度强化学习(Deep Reinforcement Learning,DRL)结合了强化学习(Reinforcement Learning,RL)和深度学习(Deep Learning)的优点,使得智能体能够在复杂的环境中学…...
每日一题力扣2974.最小数字游戏c++
2974. 最小数字游戏 - 力扣(LeetCode) class Solution { public:vector<int> numberGame(vector<int>& nums) {vector<int> arr(nums.size());sort(nums.begin(),nums.end());for(size_t i0;i<nums.size();i2){arr[i]nums[i1]…...
