一次性傳送多個命令,減少網路開銷。(是多個reids命令的集合,不用每次都去建立連線)
原子性 (redis會將這個lua指令碼認為是乙個整體去執行,不會被打斷,所以保證原子性)
lua 檔案復用 (命令非常多,可以放在乙個檔案中,這樣其他的redis也可以呼叫,使其復用)
127.0.0.1:6379> eval "return 'hello world'" 0
"hello world"
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> eval "return redis.call('set',keys[1],ar**[1])" 1 hz 2222
ok127.0.0.1:6379> keys *
1) "hz"
127.0.0.1:6379> get hz
(nil)
127.0.0.1:6379> get hz
"2222"
127.0.0.1:6379>
[root@iz2ze09u9vrxaf1z3n8oomz bin]# ls
dump.rdb redis-benchmark redis-check-rdb redis-sentinel
hz.lua redis-check-aof redis-cli redis-server
[root@iz2ze09u9vrxaf1z3n8oomz bin]# ./redis-cli --eval hz.lua 0
"22222222222"
[root@iz2ze09u9vrxaf1z3n8oomz bin]# vim hz.lua
redis.call('set','hz','22222222222')
return redis.call('get','hz')
127.0.0.1:6379> script load "return 'hello world'" //生成摘要
"5332031c6b470dc5a0dd9b4bf2030dea6d65de91"
127.0.0.1:6379> evalsha "5332031c6b470dc5a0dd9b4bf2030dea6d65de91" 0 //通過摘要執行命令
"hello world"
127.0.0.1:6379>
新開啟乙個客戶端,使用script kill命令停止 Lua基本語法 Redis使用Lua指令碼
lua 學習目標是 能寫一些 lua指令碼。redis 使用lua 5.1 版本。lua是動態型別語言。1.資料型別 空 nil 沒有賦值的變數或表的字段 都是nil 布林 boolean 包含 true 和 false 字串 string 如 a 或 a 表 table 既可以是 陣列 又可以是 ...
lua指令碼的基本語法(二)
1.語法約定 lua語句用分號結尾,不過如果不寫分號,lua也會自己判斷如何區分每條語句 如 a 1 b a 2 這樣寫沒有問題,但不太好看。建議一行裡有多個語句時用分號隔開 變數名 函式名之類的命名規則與c語言一樣 由字母,下劃線和數字組成,但第乙個字元不能是數字。並且不能和lua的保留字相同。l...
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...