redis~lua腳本的使用

經過lua腳原本運行redis命令主要體如今批量執行和跨語言方面,咱們能夠經過redis.call()函數來執行lua腳本,下面介紹幾個lua裏的參數redis

eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
  1. eval表明執行Lua語言的命令。
  2. lua-script表明Lua語言腳本。
  3. key-num表示參數中有多少個key,須要注意的是Redis中key是從1開始的,若是沒有key的參數,那麼寫0。
  4. [key1 key2 key3…]是key做爲參數傳遞給Lua語言,也能夠不填,可是須要和key-num的個數對應起來。
  5. [value1 value2 value3 …]這些參數傳遞給Lua語言,他們是可填可不填的。

實例

在redis裏添加一個foo,值是lind函數

eval "return redis.call('set',KEYS[1],ARGV[1])" 1  foo value

下面這個實例是實現分佈鎖的lua腳本lua

local lockClientId = redis.call('GET', KEYS[1])\n" +
					"if lockClientId == ARGV[1] then\n" +
					"  redis.call('PEXPIRE', KEYS[1], ARGV[2])\n" +
					"  return true\n" +
					"elseif not lockClientId then\n" +
					"  redis.call('SET', KEYS[1], ARGV[1], 'PX', ARGV[2])\n" +
					"  return true\n" +
					"end\n" +
					"return false"

這個腳本與開發語言沒有關係。code

相關文章
相關標籤/搜索