天天看點

阿裡雲redis-proxy指令支援

client指令目前支援client list, setname, getname, kill四個sub command.

client list列出所有連接配接到該proxy的所有user connection,字段和redis核心一樣,id, age, idle, addr, fd, name, db, multi, omem, cmd字段和redis核心表達的意思一樣。sub, psub在proxy層沒作區分,要麼都為1,要麼都為0。qbuf, qbuf-free, obl, oll字段目前沒有意義。

用法和redis核心一緻

kill指令目前支援兩種形式:

叢集規格中,這幾個指令不再要求所有key必須在同一個slot中,使用和主從版沒差別。

事務之前沒有使用watch指令并且事務中都是單key指令場景不再要求所有key必須在同一個slot中,使用方式和直連redis完全一緻,其他場景要求事務中所有指令的所有key必須在同一個slot中。

多key指令清單:

不允許在事務中使用的指令清單:

redis原生的info指令中最多可以帶一個可選的section,如下所示:

目前阿裡雲redis叢集規格中,部分指令限制所有key必須在同一個slot中,proxy新增info key指令查詢key所屬的slot,友善使用者查詢某些key是否在同一個slot中。

最新版的redis-proxy已經支援monitor指令,他會把所有節點上的monitor結果彙聚再吐出來,叢集模式也可以使用imonitor,讀寫分離可以使用rimonitor來對特定節點執行monitor。

最新版的redis-proxy已經支援scan指令,叢集模式下仍然可以使用iscan指令來掃描特定節點。

需要注意的是,低版本jedis(<2.4.0)scan的實作中使用了int作為cursor,直接可能會掃描不到所有的資料。

阿裡雲redis-proxy針對叢集規格擴充了若幹指令,友善叢集使用者的使用。

用于查某個key所在的slot和db,使用格式相對原生info指令作了擴充,增加一個sub command,redis-proxy把key後面的參數按照内部路由規則計算該參數所屬的slot和db節點。

注意:1.線上舊版本可能出現info key顯示出來的node index和執行個體拓撲圖的node index不一緻,最新版本已經回複。使用者可以通過info key指令來判斷某些key是否在同一個slot或者db節點中。2.info key中顯示的node 是指叢集規格下後端的實體節點,和select指令中的db不是一個概念。

iinfo指令是阿裡雲redis-proxy新增指令,用法類似info,用于在指定的redis節點上執行info指令。用法:

直接執行info指令,redis-proxy做了一些處理(redis-proxy把info轉發給所有redis節點,然後對傳回的結果有些字段取最大值,有些取平均值),如果要了解某個redis的info可以使用iinfo指令,db_idx的範圍是[0, nodecount),nodecount可以通過info指令擷取或者從控制台上檢視執行個體拓撲圖。

和iinfo指令類似也是阿裡雲redis-proxy新增指令,但使用在讀寫分離的模式下。用法中增加了一個readonly slave的idx,用于指定在第幾個readonly slave上執行info指令。在讀寫分離叢集中可以用來在指定readonly slave上執行info指令。如果在非讀寫分離叢集中使用,會傳回錯誤。

用法:

iscan指令是阿裡雲redis-proxy新增指令,叢集模式下可以在指定的db節點上執行scan指令。在scan指令的基礎上擴充了一個參數用于指定db_idx, db_idx的範圍是[0, nodecount), nodecount可以通過info指令擷取或者從控制台上檢視執行個體拓撲圖。

imonitor也是阿裡雲redis-proxy新增指令,和iinfo, iscan類似,在monitor的基礎上新增一個參數指定monitor執行的db_idx,db_idx的範圍是[0, nodecount), nodecount可以通過info指令擷取或者從控制台上檢視執行個體拓撲圖。

rimonitor是阿裡雲redis-proxy自研指令,和riinfo類似,用于讀寫分離場景下,在指定的shard裡的指定隻讀從庫上執行monitor指令。

imonitor和rimonitor自研指令請使用telnet執行