Redis偶发Cannot determine a partition for slot报错问题

news2024/11/18 13:59:13

Redis偶发Cannot determine a partition for slot报错问题

  • 一、背景
  • 二、问题定位
    • 1、报错位置
    • 2、lettuce定时刷新任务
    • 3、本地缓存masterCache先清理后写入的问题
  • 三、解决方案:版本升级

一、背景

线上系统(springboot)经常报错Cannot determine a partition for slot,搜索过后发现已有的解决方案大多是Redis集群的配置不对。对于我们的线上系统来说,这显然是不可能的,经过和DBA确认,报错时间点Redis集群无变更。

Caused by: io.lettuce.core.cluster.PartitionSelectorException:
Cannot determine a partition for slot 5586.

二、问题定位

我们系统使用的是lettuce6.2.0.RELEASE

1、报错位置

根据报错信息搜索报错的代码位置,可以看到是通过slot槽获取Redis节点信息时,返回值为null。
在这里插入图片描述

2、lettuce定时刷新任务

下面分析masterCache的写入机制。
而对于lettuce而言,开启拓扑定时刷新后,会提交定时刷新任务到Schedule线程池(ScheduledExecutorService)中。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

对于拓扑刷新的核心步骤分为三步
在这里插入图片描述

3、本地缓存masterCache先清理后写入的问题

在lettuce定时刷新任务的第三步时,会进行本地缓存的刷新,其先进行本地缓存的清理,再写入新的缓存,那对于本地缓存已清理新缓存还未写入的这段时间差,如果有Redis操作,则会找不到节点,即抛出Cannot determine a partition for slot异常。
在这里插入图片描述
在这里插入图片描述

三、解决方案:版本升级

将lettuce升级至最新版本6.2.6.RELEASE,可以看到其刷新本地缓存的逻辑已经进行了优化,只有当节点信息为空的时候才会清理本地缓存,直接用新的缓存信息覆盖旧缓存。
![[Pasted image 20231226204432.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1359042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python小细节之Gui图形化界面库tkinter学习

敲打计数脚本学TKinter 引言开整选择决定难易了解她使用她运行效果 结尾 引言 我的爬取表情包的爬虫文件写好了 运行 输入关键词就可以得到对应的 表情包 我也通过pyinstall 打包了 但是很丑 就只有一个黑box 我是新手 所以我知道 这对于普通人来说 不友好 且在使用的过程中 …

自定义列表里面实现多选功能

需求 我们在开发过程中有时候会遇到列表里面会有多选,然后列表样式也要进行自定义。这里我们如果直接使用ElementUI组件el-table表格的时候这里实现起来可能比较复杂不方便,我们这里手写自定义一下列表里面多选的功能。 实现效果如下图所示&#xff1a…

二叉搜索树与双向链表

解题思路一: /** public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val val;} } */ // 一定要用自己的理解真正弄出来才行,否则没有用! // 再次提醒,计算机这种工科…

【Python案例实战】水质安全分析及建模预测

一、引言 1.水资源的重要性 水是生命之源,是人类生存和发展的基础。它是生态系统中不可或缺的组成部分,对于维系地球上的生命、农业、工业、城市发展等方面都具有至关重要的作用。 2.水质安全与人类健康的关系 水质安全直接关系到人类的健康和生存。水中的污染物和有害物…

C# OpenCvSharp DNN Gaze Estimation

目录 介绍 效果 模型信息 项目 代码 frmMain.cs GazeEstimation.cs 下载 C# OpenCvSharp DNN Gaze Estimation 介绍 训练源码地址:https://github.com/deepinsight/insightface/tree/master/reconstruction/gaze 效果 模型信息 Inputs ----------------…

正则表达式解析与应用:深度剖析正则表达式的威力

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

pytorch机器学习各种激活函数总结(不完整学习更新中~)

pytorch各种激活函数总结 0.思维导图预览1. ReLU函数1.1 改进版ReLU6函数 2. Sigmoid函数3. Softmax函数4. Tanh函数5.(学习后更新) 0.思维导图预览 1. ReLU函数 ReLU(Rectified Linear Unit)线性整流函数 其公式为: …

常用API(String,StringBuilder,StringJoiner)

文章目录 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

软件测试|SQL AND和OR运算符解析

简介 在SQL(Structured Query Language)中,AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句,帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符,包括其语法、用法以及使用时…

数据结构学习 jz63股票的最大利润

关键词:动态规划 滚动数组优化 这题不要被动态规划吓到了,其实很简单。 用时16min 题目: 思路: 最大利润的实现办法:在最低的时候买入,在最高的时候卖出。 dp状态: dp[i]第i天如果卖出的最…

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景,该组件功能完整&#xff…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

八、Lua脚本详解—— 超详细操作演示!

八、Lua脚本详解 —— 超详细操作演示! 八、Lua脚本详解8.1 Lua 简介8.2 Linux 系统的Lua8.2.1 Lua 下载8.2.2 Lua 安装8.2.3 Hello World 8.3 Win 系统的Lua8.4 Lua 脚本基础8.4.1 注释8.4.2 数据类型8.4.3 标识符8.4.4 运算符8.4.5 函数8.4.6 流程控制语句8.4.7 循…

2021-05-08 51单片机74HC164、74LS164、74HCT164、74HC154、74HCT154应用三极管控制继电器

74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上,下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

函数式编程及应用

目录 什么是Lambdalambda表达式的类型及实现方式类型语法 常用函数式接口Customer 函数式编程在Stream中的应用总结参考资料 什么是Lambda Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的Java代码。 Lambda 表达式描述了一…

图片剪切软件,让图片处理更加高效

随着数字技术的不断发展,图片剪切也在不断进步。从手动裁剪到自动识别,图片剪切正变得越来越简单、高效,在这里面,图片处理软件的作用是不可忽视的。 所需工具: 一个【首助编辑高手】软件 需要剪切的图片 操作步骤…

【python】魔术方法大全(一)--基础篇

如果对你有帮助,欢迎微信搜索【海哥python】关注这个互联网苟且偷生的工具人。 什么是魔术方法 所谓魔法方法,它的官方的名字实际上叫special method,是Python的一种高级语法,允许你在类中自定义函数,并绑定到类的特殊…

Weblogic安全漫谈(四)

黑名单机制必然会推动两种研究方向的发展:一是挖掘不在黑名单的新组件,是为绕过规则;二是发掘检查的盲区,是为绕过逻辑。 CVE-2020-14756 二次反序列化具有对抗检查逻辑的天生丽质,在CVE-2018-2893中就有利用字节数组…