Redisson3.14.1及之后連接阿里云redis代理模式,使用分布式鎖:ERR unknown command ‘WAIT‘

文章目錄

  • 一、問題背景
    • 1、問題原因
    • 2、阿里云對Redisson的支持
  • 二、解決方案
    • 1、繼續使用Redisson3.14.0版本
    • 2、阿里云redis改為直連模式
    • 3、升級Redisson版本到 3.47.0+

一、問題背景

1、問題原因

阿里云Redis分直連和代理模式,其中代理模式是不支持WAIT命令的。

目前嘗試使用redisson實現分布式鎖的時候出現無法執行WAIT命令(實際分布式鎖命令是執行成功的,只是3.14.1及之后的redisson版本會報未知WAIT命令的錯誤)
Redisson 很早就會附加 WAIT 命令,只是從 3.14.1 開始才關注 WAIT 命令的執行結果。

Exception in thread "main" org.redisson.client.RedisException: ERR unknown command 'WAIT'. channel: [id: 0xf842ee1d, L:/192.168.1.20:52123 - R:/192.168.1.10:6379] command: (WAIT), params: [1, 1000]at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:343)at org.redisson.client.handler.CommandDecoder.decodeCommandBatch(CommandDecoder.java:247)at org.redisson.client.handler.CommandDecoder.decodeCommand(CommandDecoder.java:189)at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:117)at org.redisson.client.handler.CommandDecoder.decode(CommandDecoder.java:102)at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:510)at io.netty.handler.codec.ReplayingDecoder.callDecode(ReplayingDecoder.java:366)at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)at java.lang.Thread.run(Thread.java:750)

阿里云官方強調【暫不支持通過集群架構的Proxy節點(代理模式)執行WAIT命令,如有需要,您可以通過集群架構的直連地址執行WAIT命令】),從而導致報錯。源碼層面的原因在于當進行加鎖或者解鎖操作時,redisson會判斷當前集群的redis節點數是否大于0來給命令數組對象增加WAIT命令,這個是所有版本的redisson都有。

2、阿里云對Redisson的支持

阿里云對Redisson的支持態度很模糊,表示不會特意去適配Redisson。
在這里插入圖片描述

二、解決方案

1、繼續使用Redisson3.14.0版本

不去關注 WAIT 命令的執行結果,相當于沒有 WAIT 命令。
Redisson3.14.0版本雖然也使用了WAIT命令,但是沒有關注其結果,所以不會報錯。

2、阿里云redis改為直連模式

阿里云redis跳過代理,改為直連模式。
相當于直接連接redis。

3、升級Redisson版本到 3.47.0+

看這個Issue:https://github.com/redisson/redisson/issues/6716

實測確實可以解決。
Redisson有幾個中間版本也是可以解決這個問題的,但是最新版本是沒問題的,建議升級最新版本
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93950.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93950.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93950.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux: RAID(磁盤冗余陣列)配置全指南

Linux:RAID(磁盤冗余陣列)配置一、RAID 核心概念 RAID(Redundant Array of Independent Disks,磁盤冗余陣列)通過將多個物理磁盤組合為一個邏輯存儲設備,實現提升讀寫性能、增強數據安全性或平衡…

《GPT-OSS 模型全解析:OpenAI 回歸開源的 Mixture-of-Experts 之路》

目錄 一、引言 二、GPT-OSS 模型簡介 1. 版本與定位 2. 架構設計與技術亮點 2.1 Mixture-of-Experts(MoE)架構 2.2 高效推理機制與優化技術 2.3 模型對比 三、模型部署 1. 安裝相關依賴 1.1 uv 安裝 1.2 conda 安裝 1.3 Transformers 運行 g…

【力扣熱題100】雙指針—— 接雨水

題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 注意:答案中不可以包含重復的三元組。輸入:height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由…

51單片機拼接板(開發板積木)

一、前言 1.1 背景 讀書那會兒(2013年左右)網上接了很多51單片機的設計。 當時有個痛點: 每張板子都是定制的,畫板子,打樣,寫代碼需要花費很多時間。 希望有一張板子,能夠實現絕大多數單片機的功能&#xf…

使用segment-anything將目標檢測label轉換為語義分割label

使用segment-anything將目標檢測label轉換為語義分割label一、segment-anything簡介二、segment-anything安裝2.1安裝方法2.2預訓練模型下載三、將目標檢測label轉換為語義分割label3.1示例代碼3.2代碼說明一、segment-anything簡介 segment-anything是facebookresearch團隊開…

【unitrix數間混合計算】3.3 無符號整數標記trait(bin_unsigned.rs)

一、源碼 這段代碼是用 Rust 語言實現的一個類型級無符號二進制整數系統,通過類型系統在編譯時表示和操作二進制數字。這是一種典型的"類型級編程"(type-level programming)技術。 use crate::number::{U0, Bin, Bit, BinInt};/// …

Python基本語法總結

1.類(Class)在Python中類(Class)是面向對象編程(OOP)的核心概念。1.1.類的基本定義最簡單的類class Cat:"""這是一個最簡單的類"""pass #創建實例 obj Cat()包含方法的類cl…

數據結構05(Java)-- ( 歸并排序實質,歸并排序擴展問題:小和問題)

前言 本文為本小白🤯學習數據結構的筆記,將以算法題為導向,向大家更清晰的介紹數據結構相關知識(算法題都出自🙌B站馬士兵教育——左老師的課程,講的很好,對于想入門刷題的人很有幫助&#x1f4…

稅務專業人員能力構建與發展路徑指南

CDA數據分析師證書含金量高,適應了未來數字化經濟和AI發展趨勢,難度不高,行業認可度高,對于找工作很有幫助。一、稅務專業人員的核心能力框架能力維度關鍵技能要素專業工具與方法論實踐輸出成果稅務法規應用稅種政策解讀、法規更新…

Linux中rsync使用與inotify實時同步配置指南

Linux中rsync使用與inotify實時同步配置指南 一、rsync 簡介 rsync(Remote Sync)是 Linux 系統下的一款高效數據鏡像和備份工具,用于在本地或遠程同步文件和目錄。 支持本地復制、基于 SSH 的遠程同步,以及使用自有 rsync 協議的同…

Unicode 字符串轉 UTF-8 編碼算法剖析

📊 Unicode 字符串轉 UTF-8 編碼算法剖析 ——從 C# char 到 C wchar_t 的編碼轉換原理 引用:UTF-8 編解碼可視化分析 🔍 1. 算法功能概述 該函數將 Unicode 字符串(C# string)轉換為 UTF-8 編碼的字節數組&#xf…

php的安全性到底怎么樣

PHP作為一種流行的服務器端腳本語言,被廣泛應用于Web開發。然而,由于PHP是一種較為靈活的語言,其安全性議題一直備受爭議。在這篇文章中,我將從多個方面來討論PHP的安全性,包括常見的安全漏洞、防范措施以及最佳實踐。…

mapbox高階,結合threejs(threebox)添加建筑glb模型,添加陰影效果,設置陰影顏色和透明度

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言 1.1 ??mapboxgl.Map 地圖對象 1.2 ??mapboxgl.Map style屬性 1.3 ??threebox loadObj加載模型 二、??…

SSM從入門到實戰:1.6 Spring數據訪問與JDBC模板

👋 大家好,我是 阿問學長!專注于分享優質開源項目解析、畢業設計項目指導支持、幼小初高的教輔資料推薦等,歡迎關注交流!🚀 06-Spring數據訪問與JDBC模板 📖 本文概述 本文是SSM框架系列Spri…

下一代IT服務管理:ITIL5會是什么樣?

ITIL4發布到現在也就5年多時間,按照以往的更新節奏,ITIL5最早也得2027年之后。但現在IT發展的速度,跟以前完全不是一個量級。AI都快把我們的飯碗搶了(開個玩笑),ITIL要是還按部就班,估計真要被時…

最新研究進展:2023-2025年神經機器翻譯突破性成果

文章目錄 一、模型架構創新 1.1 混合架構的崛起 1.2 多模態翻譯的突破 1.3 大語言模型與NMT的深度融合(2023-2024) 1.4 非自回歸翻譯(NAT)的效率革命(2024) 二、數據與訓練策略優化 2.1 低資源語言翻譯的飛躍 2.2 動態數據增強技術 三、效率與部署 3.1 模型壓縮與加速 3.…

OpenTelemetry WebSocket 監控終極方案:打通最后一公里

概述 OpenTelemetry,以下簡稱 OTEL,是由 CNCF 托管的“一站式可觀測性標準”,把指標、鏈路、日志三大信號統一為單一 SDK/API,零侵入地采集從瀏覽器、移動端到后端、容器、云服務的全棧遙測數據,并支持 40 后端一鍵導…

VS Code 出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題解決方案

針對 VS Code 或 Cursor (vscode系)中出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題,以下是永久性解決方案的完整操作指南:解決方案步驟打開命令面板 使用快捷鍵 CtrlShiftP(Windows/Linux)或 CmdShift…

【qml-4】qml與c++交互(類型多例)

背景: 【qml-1】qml與c交互第一次嘗試(實例注入) 【qml-2】嘗試一個有模式的qml彈窗 【qml-3】qml與c交互第二次嘗試(類型注冊) 【qml-4】qml與c交互(類型多例) 【qml-5】qml與c交互&#…

圖數據庫如何構筑 Web3 風控防線 聚焦批量注冊與鏈上盜轉 悅數圖數據庫

隨著 Web3 生態的不斷演進,鏈上風險呈現出團伙化、隱蔽化和動態化的趨勢,傳統的單點風控手段已難以應對復雜多變的攻擊模式。尤其在批量注冊薅羊毛與鏈上交易盜轉洗錢等高頻風險場景中,攻擊者往往通過偽造身份、跨鏈操作、多層嵌套轉賬等方式…