Lua指令碼的基本使用

2021-10-07 21:42:59 字數 1308 閱讀 7063

一次性傳送多個命令,減少網路開銷。(是多個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...