1、eval:
eval 指令碼內容 key個數 key列表 引數列表
127.0.0.1:6379> eval 'return "hello " .. keys[1] .. " " .. ar**[1]' 1 redis why
"hello redis why"
2、evalsha:
先通過script load命令將lua指令碼載入到redis,得到該指令碼的sha1校驗和,服務端儲存hash值到lua指令碼的對映關係,evalsha命令使用sha1作為引數可以直接執行對應lua指令碼,指令碼常駐redis服務端,達到復用
redis.call("set", "why", "why")
vim why_lua.lua
redis.call("set", "why", "why")
redis.call("get", "why")
redis.call("del", "why")
redis.call("get", "why")
return "success!"
$redis-cli script load "$(cat why_lua.lua)"
"6bf3b28be7483331014e8b03f5014e5c0f89d1fc"
$redis-cli evalsha 6bf3b28be7483331014e8b03f5014e5c0f89d1fc 0
"success!"
$redis-cli
127.0.0.1:6379> evalsha 6bf3b28be7483331014e8b03f5014e5c0f89d1fc 0
"success!"
redis自定義lua指令碼
redis底層是用c語言寫的。執行的redis命令底層是呼叫的對應的lua指令碼。下面是跟著james老師通過做自定義lua指令碼,實現限流的功能。指令碼實現的功能是 在3秒內不超過2個連線。1 lua編譯器安裝 2 lua指令碼編寫 我是在redis安裝目錄 usr local soft redi...
lua自定義排序
說一下lua的table庫中比較常用的排序函式 table.sort 第乙個引數代表要進行排序的table,第二個引數是可選的,如果沒有第二個引數,那麼這個函式就會將table元素從小到大進行排序,我主要來說一下第二個引數。第二個引數是函式型別,這個函式接收兩個table元素,如果希望第乙個引數在排...
Redis使用lua指令碼
版本 自2.6.0起可用。時間複雜度 取決於執行的指令碼。使用lua指令碼的好處 命令格式 eval script numkeys key key arg arg 說明 簡單例項 127.0.0.1 6379 eval return ar 1 0 100 100 127.0.0.1 6379 eva...