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執行