Cluster集群(qun)實例支持(chi)多個(ge)key,但不支持(chi)跨slot訪問(wen)的(de)Redis命(ming)令(ling),如下表所(suo)示(shi)。
Proxy集群實例支(zhi)持(chi)多Key的命(ming)令中,部分命(ming)令不支(zhi)持(chi)支(zhi)持(chi)跨(kua)slot訪問(wen),請參考下表
Proxy集群實例受限使用的命令如下表(biao)
讀寫分離實例受(shou)限使用的(de)命(ming)令如下表。
表 Cluster集群實例受限(xian)使用的Redis命(ming)令
命令類型 命令描述 Set(集合) SINTER 返回一個集合的全部成員,該集合是所有給定集合的交集 SINTERSTORE 類似SINTER,但結果保存到destination集合 SUNION 返回一個集合的全部成員,該集合是所有給定集合的并集 SUNIONSTORE 和SUNION類似,但它將結果保存到destination集合 SDIFF 返回一個集合的全部成員,該集合是所有給定集合之間的差集 SDIFFSTORE 和SDIFF類似,但它將結果保存到destination集合 SMOVE 將member元素從source集合移動到destination集合 SortedSet(有序集合) ZUNIONSTORE 計算給定的一個或多個有序集的并集 ZINTERSTORE 計算給定的一個或多個有序集的交集 HyperLogLog PFCOUNT 返回儲存在給定鍵(或多個鍵)的HyperLogLog的近似基數 PFMERGE 將多個HyperLogLog合并(merge)為一個HyperLogLog Keys RENAME 將key改名 RENAMENX 將key改名,新key必須是之前不存在的 BITOP 對一個或多個保存二進制位的字符串key進行位元操作,并將結果保存到destkey上 RPOPLPUSH 返回并移除存儲在source的列表的最后一個元素(列表尾部元素), 并把該元素放入存儲在destination的列表的第一個元素位置(列表頭部) String(字符串) MSETNX 同時設置一個或多個key-value對
說明當用戶執行比(bi)較耗時的(de)命(ming)令(ling)(ling)(如flushall)時,可能(neng)會導致緩(huan)(huan)存(cun)實例在命(ming)令(ling)(ling)執行期間對外不響應用戶的(de)其它命(ming)令(ling)(ling),造成狀(zhuang)態監控失效(xiao),此時Console上(shang)緩(huan)(huan)存(cun)實例的(de)狀(zhuang)態會變成異常(chang),命(ming)令(ling)(ling)執行結束(shu)后,實例狀(zhuang)態會恢(hui)復正常(chang)。
表(biao) Proxy集群(qun)多Key命(ming)令說明
| 類型 | 命令 |
|---|---|
| 支持跨slot的多Key命令 | DEL、MGET、MSET、EXISTS、SUNION、SINTER、SDIFF、SUNIONSTORE、SINTERSTORE、SDIFFSTORE、ZUNIONSTORE、ZINTERSTORE |
| 不支持跨slot的多Key命令 | SMOVE、SORT、BITOP、MSETNX、RENAME、RENAMENX、BLPOP、BRPOP、RPOPLPUSH、BRPOPLPUSH、PFMERGE、PFCOUNT、BLMOVE、COPY、GEOSEARCHSTORE、LMOVE、ZRANGESTORE |
表 Proxy集群實例受限使用的Redis命令
命令類型 命令 受限使用條件 Set(集合) SMOVE proxy集群要求源key和目標key在同一個slot Sorted Set(有序集合) BZPOPMAX Proxy集群實例要求傳入的key都在同一個slot中 BZPOPMIN GEO(地理位置) GEORADIUS
Proxy集群實例要(yao)求傳入的key都在同一個slot中。
Proxy集群的多DB模式下暫不支持帶STORE參數(shu)。
GEORADIUSBYMEMBER GEOSEARCHSTORE Connection(連接) CLIENT KILL
僅支持兩種形式:
?CLIENT KILL ip:port
?CLIENT KILL ADDR ip:portid字段為隨機值,不滿足idc1
CLIENT LIST
僅支持兩種形式:
?CLIENT LIST
?CLIENT LIST [TYPE normal|master|replica|pubsub]id字段為隨機值,不滿足idc1
SELECT index Proxy集群的多DB支持當前通過改key實現,不推薦使用該方案。
Proxy集群支持多DB限制
后端存儲會按照一定規則對key進行改寫,導出RDB數據中的key不是原始的key,但通過Redis協議訪問無影響。
flushdb命令采用逐個key刪除的方式執行,耗時久。
swapdb不支持。
info keyspace不支持多DB展示。
dbsize命令非常耗時,禁止在代碼中使用。
多DB場景下keys命令和scan命令性能會有損失(最多50%)。
LUA腳本中不支持多DB。
RANDOMKEY命令不支持。
默認不開啟多DB,開啟和關閉多DB特性之前需要先清空數據。HyperLogLog PFCOUNT Proxy集群實例要求傳入的key都在同一個slot中。 PFMERGE Keys(鍵) RENAME Proxy集群實例要求傳入的key都在同一個slot中。 RENAMENX SCAN Proxy集群實例不支持在pipeline中使用SCAN命令。 Lists(列表) BLPOP Proxy集群實例要求傳入的key都在同一個slot中。 BRPOP BRPOPLPUSH Pub/Sub(發布/訂閱) PSUBSCRIBE Proxy集群事件訂閱,不支持鍵空間事件訂閱,鍵空間事件訂閱雖不會失敗,但功能本身不支持。 Scripting(腳本) EVAL
Proxy集群實例要(yao)求傳入的key都在同一個slot中。
Proxy集群開啟多DB時,KEYS參數會(hui)被修改(gai),Lua腳本中使用(yong)到KEYS的地方需要注意。
EVALSHA Server(服務器) MEMORY DOCTOR proxy集群要在命令后面加上節點的ip:port。
獲取節點IP和端口的方式請參考(以MEMORY USAGE為例):
執行命令cluster keyslotkey查詢key所在的slot號。
執行icluster nodes查詢不同slot區間對應的IP地址及端口,獲取key值對應slot號區間對應的IP和端口。
如果執行icluster nodes未能返回需要信息,可能是因為您的Proxy集群實例為老版本,請執行cluster nodes重新查詢。
執行MEMORY USAGEkey?ip:port。
如果Proxy集群開啟了多DB,則執行MEMORY USAGExxx:As{key} ip:port,其中xxx為key值所在的DB,例如DB0,DB1,DB255分別對應000,001,255。
單DB Proxy集群實例示例如下:
set key1 value1
OK
get key1
value1
cluster keyslot key1
9189
icluster nodes
xxx 192.168.00.00:1111@xxx xxx connected 10923-16383 ?
xxx 192.168.00.01:2222@xxx xxx connected 0-5460 ?
xxx 192.168.00.02:3333@xxx xxx connected 5461-10922
MEMORY USAGE key1 192.168.00.02:3333
54MEMORY HELP MEMORY MALLOC-STATS MEMORY PURGE MEMORY STATS MEMORY USAGE MONITOR Strings(字符串) BITOP Proxy集群實例要求傳入的key都在同一個slot中。 MSETNX Transactions(事務) WATCH Proxy集群實例要求傳入的key都在同一個slot中。 MULTI 不保證事務中跨slot命令的有序性。
事務中禁用的命令:WATCH, MONITOR, RANDOMKEY, KEYS, SCAN, SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE, PUNSUBSCRIBE, SCRIPT, EVAL, EVALSHA, DBSIZE, AUTH, FLUSHDB, FLUSHALL, CLIENT, MEMORYEXEC Streams(流) XACK proxy集群目前不支持streams的使用。 XADD XCLAIM XDEL XGROUP XINFO XLEN XPENDING XRANGE XTRIM XREVRANGE XREAD XREADGROUP GROUP XAUTOCLAIM ?
表(biao) 讀(du)寫(xie)分(fen)離實例受限使用的Redis命令(ling)
命令類型 命令 受限使用條件 Connection(連接) CLIENT KILL
?僅支持兩種形式:
?CLIENT KILL ip:port
?CLIENT KILL ADDR ip:portid字段為隨機值,不滿足idc1
CLIENT LIST
僅支持兩種形式:
?CLIENT LIST
?CLIENT LIST [TYPE normal|master|replica|pubsub]?id字段為隨機值,不滿足idc1