2026/3/4 12:50:00
网站建设
项目流程
wordpress建站教程凌风,个人网站 创意,做网站哪家好 要钱,制作网页原型的目的文章目录一、前言二、Redis如何实现持久化1、AOF重写2、RDB和AOF混合使用三、Redis主从架构四、Redis哨兵架构五、Redis高可用集群Cluster模式六、Leader选举原理一、前言
头发稀疏、两个头发之间能放下我的一个拳头#xff0c;睡眼朦胧、眼睛看不出是睁是闭#xff0c;眼镜…文章目录一、前言二、Redis如何实现持久化1、AOF重写2、RDB和AOF混合使用三、Redis主从架构四、Redis哨兵架构五、Redis高可用集群Cluster模式六、Leader选举原理一、前言头发稀疏、两个头发之间能放下我的一个拳头睡眼朦胧、眼睛看不出是睁是闭眼镜风霜两个眼镜片沾满了头屑。这面试官得有七八十岁了吧还能看清我的简历吗二、Redis如何实现持久化面试官你先说一下Redis如何实现持久化的我Redis主要有两种持久化方式一种是RDB快照方式另一种是AOF格式。面试官可以说一说两者的区别和如何配置使用吗我们可以想象一下我现在要记录一个人的姿势是什么样子的那么我只能通过拍照或者描述来记录RDB快照方式可以理解我想知道目前一个人的姿势是什么样子的那么我就给他拍一张照片那么照片上就是他这个人的姿势。AOF可以理解为动作的描述我通过对这个人每一个动作的描述来知道这个人的姿势是什么样子的比如这个人左手六、右手七、左脚画圆、右脚踢那么我通过这些动作就知道这个人目前的姿势。所以RDB快照就相当于将Redis中的数据保存了下来恢复的时候只需要将照片拿出来人根据姿势恢复就行了。而AOF相当于将Redis中的每一条执行命令记录了下来恢复的时候需要根据命令一条一条的来先左手六、再右手七、再左脚画圆、再右脚踢。。。如果想不明白可以按照姿势试一下就明白了RDB在redis.conf目录中进行配置命令格式为 save [时间] [次数]那save 60 10000来举例含义是如果在60秒内有至少10000条改动那么就自动保存一次也就是拍一张照片那么中间如果改动到500条的时候Redis挂了那么这500条改动就找不到了。如果执行save命令会造成Redis正常读写收到影响我们可以用bgsave写时复制命令来生成RDB快照bgsave是用一个子线程来实现快照功能主线程继续他的读写任务使用AOF来保存数据就不会有RDB快照中Redis宕机所产生的风险了因为AOF保存的是每一条命令但是AOF也并不是只能每一条命令就保存一次这样会耗费性能我们可以设置为每1秒执行一次保存这样就算丢失也只会丢失1秒的数据可以通过配置文件中的appendonly设置为yes来开启AOF功能AOF有三个保存策略appendfsync always每次有新命令就保存下来性能最慢但是最安全appendsync everysec每秒保存一次命令足够快故障时只会丢失1秒钟的数据appendfsync no从不保存将数据交给操作系统来处理。更快也更不安全推荐使用每秒保存一次命令的方式1、AOF重写面试官AOF中那么多命令恢复起来太麻烦有没有什么优化的方式AOF文件中有太多没用的指令所以AOF会定期根据内存的最新数据生成AOF文件例如我们记录一个人的动作发现他先抬手再放下手、然后再抬手那我我们可以将动作合并为一个动作就是抬手因为执行抬手放手抬手三个动作和只执行一个抬手的动作是一样的我们可以配置AOF重写的频率有两个配置项auto-aof-rewrite-percentage 100 aof文件自上一次重写后文件大小增长了100%则再次触发重写auto-aof-rewrite-min-size 64mb aof文件至少要达到64M才会自动重写文件太小恢复速度本来就很快重写的意义不大aof可以手动重写命令为bgrewriteaof此时也会使用一个子进程来重写不会对redis的正常命令有影响2、RDB和AOF混合使用面试官RDB和AOF各有优缺点我们该怎么选择在redis启动的时候如果即配置RDB又配置AOF则优先使用AOF因为AOF更加安全但是性能不太好但是我们可以混合使用达到更好的效果将RDB和AOF混合使用例如恢复的时候先根据照片恢复最后一次拍照记录的样子然后再恢复拍照后记录的动作配置开启混合使用aof‐use‐rdb‐preamble yes三、Redis主从架构面试官可以聊一聊redis的主从架构模式以及怎样搭建吗我可以redis的主从架构模式其实是用一个redis节点来做写操作主节点多个redis节点来做读操作从节点主节点会将写入的数据同步给从节点以保证从从节点读取的数据是最新的数据搭建方式主节点不用修改任何配置从节点修改redis.conf配置文件配置主节点的ip端口replicaof 代表从节点从哪个主节点同步数据配置好从节点后启动从节点这个时候启动从节点从节点会从主节点去初次获取数据四、Redis哨兵架构面试官可以聊一聊redis的哨兵架构模式以及怎样搭建吗我好的哨兵架构是在主从架构上衍生出来的因为主从架构中如果主节点挂了那么我们就不能够写入数据了只能从从节点中读取数据这样是很不方便的。那么我们弄一个哨兵集群来监视这些节点当主节点挂了以后我们哨兵选举一个从节点成为主节点并让写数据的命令得以继续执行我们用比较有名的村庄来举例。。。。搭建复制一份sentinel.conf文件进行修改redis中默认有这个文件修改端口号以及sentinel命令格式为sentinel monitor 主节点名称 端口quorum是一个数字类型意思是有多少个sentinel认为这个主节点失效时才算真正的失效比如我配置了三个sentinel那么我这里2的含义就是有两个sentinel认为当前主节点失效就算失效了。五、Redis高可用集群Cluster模式面试官能说一下高可用集群模式具体是怎么一个流程吗为什么可以解决选举等待问题我能不说吗。。。通过图中可以看出我们客户端通过访问入口可以访问多个主节点如果其中一个主节点挂了那么其他的主节点还可以正常工作不受影响。面试官这么多主节点我哪知道我set一个数据应该放入到哪个主从结构里面呢我你随机放一个不就行了吗。。。不对随机放一个取的时候就不知道去哪个主从结构里去取了总不能每一个主节点里面都去查找一遍吧我他会根据要set进去的key进行一个hash计算计算完后就知道要往哪个主节点里面存放值了取得时候也根据key进行一个hash计算就知道去哪个主节点里拿取了。面试官那这个时候来一个age计算hash是150要插入哪个主节点我肯定是第二个主节点啊redis集群采用分片模式将所有数据分片放入多个主节点中方便与水平扩展。面试官如果主节点挂了哨兵模式下哨兵集群会选举出一个主节点那你这种高可用模式如果一个主节点挂了怎么选举呢我应该是按照大小个吧。。。面试官你特么找打是吧数据那特么有大小个。。。六、Leader选举原理我这个时候就需要其他主节点来支持选举了我来用一张图描述一下。我我们可以把这三个主从节点看做是三个国家如果一个国家的头目挂掉了那么他底下其中一股势力就会找其他的国家头目来支持自己成为头目。我当然其他国家的头目不会看你国家这两股势力哪个好哪个坏而是哪个先找我我就支持你。我而且图中有三个国家支持自己的票数必须超过总国家的一半以上也就是最少要有两票支持所以redis集群节点最少要三个主从结构不然的话两个没办法选举票数最多一票不够两个国家的半数以上。面试官那塔利班和正规军他们两个怎么确定谁先发出请求呢肯定是谁先发出消息谁赢呗我他们两个小势力并不是头目挂了就立马发出请求支持消息而是有一定的延迟时间这个延迟时间根据一个公式计算公式中包含随机数和根据SLAVE_RANK的大小来计算SLAVE_RANK的大小表示从节点从主节点同步的数据总量的Rank。Rank越小代表一复制的数据越新可以做主节点。延迟公式DELAY 500ms random(0 ~ 500ms) SLAVE_RANK * 1000ms面试官假如现在网络抖动从节点一瞬间连接不上主节点了他就开始发送消息网络好了以后不就有两个主节俗称脑裂主节点相当于一个主从结构的大脑只能有一个点了吗我那我们可以配置连接不上的时间让他长一点通过cluster-node-timeout来配置假如配置5秒钟那么5秒钟之内从节点连接不上主节点是不会发起请求支持的信息的。面试官万一5秒不够呢万一我网络抖动的厉害呢我你是食堂阿姨吗手抖的这么厉害。。。我你说的这种情况属于一瞬间有两个主节点都在写入新的数据那么等网络恢复以后只会将一个节点作为主节点其他节点变为从节点过来同步那么就会丢失一部分数据。我这里我们会发现age 20数据丢失了那这个怎么办呢我们可以通过一个配置min‐replicas‐to‐write [数量]这个配置是写的数据最少同步的从节点数量。假如我这里配置的是1那么就是我写入一个值最少有一个从节点同步到了这个值才算写入成功不然就是写入失败。这样的话就可以解决上述问题当网络抖动主节点无法给从节点同步数据的时候就写入失败不会造成丢失数据但是这种配置非常影响性能不建议使用。面试官如果redis集群中一个主从结构全部挂了这个redis集群还可以使用吗我我们可以配置cluster-require-full-coverage 为no这样只是一个主从结构全部挂了不影响其他主从结构的使用如果为yes一个主从结构挂了整个redis集群就不能用了。面试官Redis集群为什么至少需要三个主节点并且推荐节点数为奇数我上面我们说过如果是两个主节点那么其中一个主节点挂了剩下活着的主节点只有一个了没有达到总数的一半以上投票也不好使啊挂了的主节点那里还是选举不出来新的主节点。另外假如是4台主节点那么他跟三台主节点一样都是最多只能挂一个主节点如果同时挂两个主节点那么剩下活着的主节点也无法超过总数的一半所以按照性价比来说奇数主节点性价比更高不过贵公司要是土豪愿意弄几个主节点就弄几个吧。。。面试官小伙子真厉害啊我这边没有什么要问的了你还有什么问题要问面试官两眼放光我我冒昧的问一句您老人家平时下班回家还有时间陪孙子玩吗“噗。。。面试官将假牙喷出两厘米又用手塞了回去说我特么今天才28”能看到这里的给我也给自己一个点赞、收藏、转发吧对我很重要啊我谢谢各位帅哥美女了文章持续更新可以搜索【极客无欲】第一时间阅读并且领取我为大家准备的资料