Redis 的 Lua 指令碼支援

來源:互聯網
上載者:User

標籤:

Redis 2.6.0 內建的Lua Script支援,可以在Redis的Server端一次運行大量邏輯。

  • 整個Script預設是在一個事務裡的。
  • Script裡涉及的所有Key盡量用變數,從外面傳入,使Redis一開始就知道你要改變哪些key。
  • EVAL每次傳輸一整段Script比較費頻寬,可以先用SCRIPT LOAD載入script,返回雜湊值。然後用EVALHASH執行。
  • 內建的LUA庫裡還很貼心的帶了CJSON,可以處理JSON字串。

參考:http://www.searchdatabase.com.cn/showcontent_70423.htm

redis中執行lua的命令用eval、evalsha、 script load

http://redis.readthedocs.org/en/latest/script/index.html

Redis 的 EVAL 命令 參數說明如下:


EVAL script numkeys key [key ...] arg [arg ...]

script 參數是一段 Lua 5.1 指令碼程式,它會被運行在 Redis 伺服器上下文中,這段指令碼不必(也不應該)定義為一個 Lua 函數。

numkeys 參數用於指定鍵名參數的個數。

鍵名參數 key [key ...] 從 EVAL 的第三個參數開始算起,表示在指令碼中所用到的那些 Redis 鍵(key),這些鍵名參數可以在 Lua 中通過全域變數 KEYS 數組,用 1 為基址的形式訪問( KEYS[1] , KEYS[2] ,以此類推)。

在命令的最後,那些不是鍵名參數的附加參數 arg [arg ...] ,可以在 Lua 中通過全域變數 ARGV 數組訪問,訪問的形式和 KEYS 變數類似( ARGV[1] 、 ARGV[2] ,諸如此類)。

上面這幾段長長的說明可以用一個簡單的例子來概括:

> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"

其中 "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 是被求值的 Lua 指令碼,數字 2 指定了鍵名參數的數量, key1 和 key2 是鍵名參數,分別使用 KEYS[1] 和 KEYS[2] 訪問,而最後的 first 和 second 則是附加參數,可以通過 ARGV[1] 和 ARGV[2] 訪問它們。

參考:http://redis.readthedocs.org/en/latest/script/eval.html

SCRIPT LOAD script

將指令碼 script 添加到指令碼緩衝中,但並不立即執行這個指令碼。

EVAL 命令也會將指令碼添加到指令碼緩衝中,但是它會立即對輸入的指令碼進行求值。

如果給定的指令碼已經在緩衝裡面了,那麼不做動作。

在指令碼被加入到緩衝之後,通過 EVALSHA 命令,可以使用指令碼的 SHA1 校正和來調用這個指令碼。

指令碼可以在緩衝中保留無限長的時間,直到執行 SCRIPT FLUSH 為止。

redis> SCRIPT LOAD "return ‘hello moto‘""232fd51614574cf0867b83d384a5e898cfd24e5a"redis> EVALSHA 232fd51614574cf0867b83d384a5e898cfd24e5a 0"hello moto"

 

EVALSHA sha1 numkeys key [key ...] arg [arg ...]

根據給定的 sha1 校正碼,對緩衝在伺服器中的指令碼進行求值。

將指令碼緩衝到伺服器的操作可以通過 SCRIPT LOAD 命令進行。

這個命令的其他地方,比如參數的傳入方式,都和 EVAL 命令一樣。

Redis 的 Lua 指令碼支援

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.