Redis 整合Lua腳本


簡介:Lua是一種由輕量級C語言編寫的腳本,跟數據的存儲過程有點類似,使用Lua腳本來執行Redis命令好處如下:

   一次性發送多個命令,減少網絡開銷;

   Redis會將整個腳本作為一個整體執行,不會被其他請求打斷,保持原子性;

   對於復雜的組合命令,我們可以放在文件中,可以實現命令復用;

1. Redis中調用Lua腳本

  A. eval script numkeys keys args

    script:lua腳本;

    numkeys:指定鍵名參數集keys的個數,如果沒有key的參數,就寫0;

    keys:鍵名參數集,通過全局變量KEYS數組表示,起始下標為1;

    args:鍵值參數集,通過全局變量ARGV數組表示,起始下標為1;

2. Lua腳本調用redis命令

  redis.call:在腳本中調用Redis命令,遇到錯誤會直接返回;

  redis.log(loglevel,message):記錄日志信息,日志級別為redis.LOG_DEBUG、redis.LOG_VERBOSE、redis.LOG_NOTICE、redis.LOG_WARNING;

3. 緩存Lua腳本

  A. 緩存作用:在Lua腳本文件比較大的情況下,如果每次調用腳本都需要把整個腳本傳給Redis服務端,會產生比較大的網絡開銷,因此需要Redis緩存Lua腳本並生成SHA1摘要碼,后面直接通過摘要碼來執行Lua腳本;

  B. 生成摘要碼:script load "......";

  C. 通過摘要碼執行緩存的腳本:evalsha "....." 0;

4. 參數

  A. 腳本超時時間:lua-time-limit 5000;

 

可參考:Lua腳本入門

    Lua腳本開發

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM