服務熱線:
13342898875
Redis lua主要用途:
(1)描述界面:WOW和劍網三的界面都是用LUA寫的;
(2)溝通引擎:游戲圖形引擎提供了一些接口庫,可以在LUA中調用;
(3)服務器端:有些游戲,例如劍網三,在服務器端也會大量使用LUA。
那么下面就阿里云優惠券平臺的小編一起來看看Redis lua命令支持及限制。
Lua 腳本功能是 Reids的最大亮點, 通過內嵌對 Lua 環境的支持, Redis 解決了長久以來不能高效地處理 CAS (check-and-set)命令的缺點, 并且可以通過組合使用多個命令, 輕松實現以前很難實現或者不能高效實現的模式。
阿里云Redis主從版本、集群版本、讀寫分離版本都支持Lua相關命令。用戶如果發現無法執行Eval相關命令,比如報"ERR command eval not support for normal user"的時候可以再控制臺進行一個小版本升級完成,升級過程中有閃斷和只讀影響,請在業務低峰期進行操作。
集群版本限制
默認阿里云Redis會對lua腳本做一定限制,目的是為了保證腳本里面的所有操作都在相同slot進行,如果用戶能夠在代碼確保所有操作都在相同slot而又想打破Redis集群的lua限制的話可以通過控制臺修改script_check_enable參數為0,則后端不會對腳本進行校驗。
云Redis集群對lua腳本限制如下:
所有key都應該由 KEYS 數組來傳遞,redis.call/pcall 中調用的redis命令,key的位置必須是KEYS array(不能使用Lua變量替換KEYS),否則直接返回錯誤信息,"-ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS arrayrn"。
所有key必須在1個slot上,否則返回錯誤信息,"-ERR eval/evalsha command keys must be in same slotrn"。
調用必須要帶有key,否則直接返回錯誤信息, "-ERR for redis cluster, eval/evalsha number of keys can't be negative or zerorn"。
13342898875