Lua腳本學習筆記

Lua腳本優勢

一、  減小網絡開銷;屢次請求在腳本中,一次便可完成redis

二、  原子操做數組

三、  複用網絡

四、  可實現熱切換數據結構

Lua測試

$ redis-cli --eval /qpth/test.lua rate.limiting:127.0.0.1 , 10 3函數

詳解:測試

/qpth/test.lua                   腳本路徑lua

rate.limiting:127.0.0.1    要操做的鍵,在腳本中可用key[1]獲取spa

10 3                                     「,」後爲參數,可用ARGV[1]ARGV[2]獲取orm

Lua語法

數據類型

nil             空值,全部爲負值的變量和字段都爲nil索引

boolean    包括truefalse

number    整點和浮點

string        二進制,單雙引號是相同的,可包含轉義字符

table         Lua腳本中惟一的數據結構,可當數組、可當字典

function   函數,可儲存在變量中,可爲函數的參數或返回值

變量

全局變量:無須聲明,直接使用,默認值爲nil

注:redis腳本中不可以使用全局變量,以防腳本之間相互影響

局部變量

聲明

local c                --聲明一個局部變量,默認值爲nil

註釋

單行註釋         -- 註釋

--[[

這是一個多行註釋

         ]]

賦值

Lua支持多重賦值

local a, b = 1, 2        --a的值爲1b的值爲2

local a, b = 1, 2, 3     -- a=1  b=2  3捨棄

local a, b c = 1, 2     -- a=1b=2 c=nil

操做符(五類)

一、  數學操做符。 +  -  *  /  %(取模) -(取負) ^冪操做符

數學操做符的操做數會自動轉換爲數字

print(‘1’+1)        --2

二、  比較操做符

==                         比較值和類型是否相同

~=                         ==的結果正好相反

<, >, <=, >=        小於、大於、小於等於、大於等於

tonumber(‘1’)  轉換爲數字

tostring(1)                   轉換爲字符串

三、  邏輯操做符

not              取反

and             a and b中,若是afalse,則返回a,不然返回b

or                a or b中,若是atrue,則返回a,不然返回b

四、  鏈接操做符

‘hello’ .. ‘world’         ..用於鏈接字符串,會自動把數字轉換字符串

五、  取長度操做符(可取字符串和表的長度)

prinf(#’hello’)             -- 5

 

注:Lua腳本中只有nilfalse纔是假,其他值包括空字符串和0都被認爲是真值

循環語句

while 條件表達式 do

         語句塊

end

repeat

         語句塊

until 條件表達式

for 變量=初值,終值,步長 do

         語句塊

end

for 變量1,變量2,…,變量N in 迭代器 do

         語句塊

end

表類型

定義方式:

a = {}

 

a[‘field’] = ‘value’    

prinf(a.field)              --‘value’

 

people = {                   --也能夠這樣定義

         name = ‘Bob’,

         age = 29

}

 

a = {}

a[1] = ‘Bob’

a[2] = ‘Jeff’

也能夠以下:

a = {‘Bob’,’Jeff’}

注:Lua數組的索引是從1開始的,而不是0

函數

function(num)

         函數體

end

能夠將其賦值給一個局部變量

local square = function (num)

         return num*num

end

在腳本中調用redis命令

redis.call(‘set’,’foo’,’bar’)

相關文章
相關標籤/搜索