Key相關命令使用限制
使用(yong)KEYS命(ming)令時,若(ruo)緩存(cun)數據(ju)量較(jiao)大(da),可能會(hui)較(jiao)長時間阻塞其它業務命(ming)令操作,甚至可能過(guo)高地占(zhan)用(yong)額外內存(cun)。因此使用(yong)KEYS命(ming)令時請(qing)盡(jin)量描述精(jing)確的(de)pattern、不要使用(yong)“keys *”進行(xing)全通配(pei)。建議(yi)盡(jin)量避免在生產環境使用(yong),否則會(hui)影響(xiang)服務的(de)健(jian)康運行(xing)。
Server相關命令使用限制
- 當用戶執行比較耗時的命令(如flushall)時,可能會導致緩存實例在命令執行期間對外不響應用戶的其它命令,造成狀態監控失效,此時Console上緩存實例的狀態會變成異常,命令執行結束后,實例狀態會恢復正常。
- 使用FLUSHDB、FLUSHALL命令時,若緩存數據量較大,可能會較長時間阻塞其它業務命令操作。
EVAL和EVALSHA相關命令使用限制
-
使用(yong)EVAL和EVALSHA命(ming)令時(shi),命(ming)令參(can)數中必須帶有至少1個key。否則(ze)客戶端(duan)會提(ti)示“ERR eval/evalsha numkeys must be bigger than zero in redis cluster mode”的錯誤。
-
使用EVAL和EVALSHA命令時,DCS Redis集群實例(li)使用第一個key來(lai)計算slot,用戶代碼(ma)需(xu)要保證操作的key是在(zai)同一個slot,具體請(qing)參考
-
使(shi)用EVAL命令(ling)時:
- 建議使用前先了解Redis的lua腳本特性,具體可參考。
- lua腳本的執行超時時間為5秒鐘,建議不要在lua腳本中使用比較耗時的代碼,比如長時間的sleep、大的循環等語句
- 調用lua腳本時,建議不要使用隨機函數去指定key,否則在主備節點上執行結果不一致,從而導致主備節點數據不一致。
Lua腳本調試命令
Proxy集群和讀(du)寫分離實例(li)(li)在(zai)執行Lua腳本調試命令(ling)時,僅(jin)支(zhi)持(chi)異(yi)步(bu)非阻(zu)塞(sai)--ldb模式,不支(zhi)持(chi)同步(bu)阻(zu)塞(sai)--ldb-sync-mode。且每個Proxy節點(dian)默(mo)認限制并發2個。其他Redis實例(li)(li)類型無(wu)此限制。
其他限制
單個Redis命令(ling)處(chu)理時長(chang)限制(zhi)為15秒左右,超過15秒未(wei)處(chu)理完,會導致客戶的其它業務失(shi)敗,因(yin)此(ci)內部(bu)會觸(chu)發主從倒換(huan)。