經過lua腳原本運行redis命令主要體如今批量執行和跨語言方面,咱們能夠經過redis.call()函數來執行lua腳本,下面介紹幾個lua裏的參數redis
eval lua-script key-num [key1 key2 key3 ....] [value1 value2 value3 ....]
在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