<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ### Redis基礎學習——腳本(Lua語言) * * * * * Redis在2.6版推出了腳本功能,允許開發者使用Lua語言編寫腳本傳到Redis中執行。在Lua腳本中可以調用大部分的Redis命令,使用腳本的好處如下。 (1)減少網絡開銷: 在Redis操作需求需要向Redis發送5次請求,而使用腳本功能完成同樣的操作只需要發送一個請求即可,減少了網絡往返時延。 (2)原子操作: Redis會將整個腳本作為一個整體執行,中間不會被其他命令插入。換句話說在編寫腳本的過程中無需擔心會出現競態條件,也就無需使用事務。事務可以完成的所有功能都可以用腳本來實現。 (3)復用: 客戶端發送的腳本會永久存儲在Redis中,這就意味著其他客戶端(可以是其他語言開發的項目)可以復用這一腳本而不需要使用代碼完成同樣的邏輯。 #### 1-1.Lua語言 這里不會完整的介紹Lua語言中的所有要素,而是只著重編寫Redis腳本會用到的部分。 1) 數據類型 |數據類型|描述| |--|--| |nil|這個最簡單,只有值nil屬于該類,表示一個無效值(在條件表達式中相當于false)。| |boolean|包含兩個值:false和true。| |number|表示雙精度類型的實浮點數。| |string|字符串由一對雙引號或單引號來表示。| |function|由 C 或 Lua 編寫的函數| |userdata|表示任意存儲在變量中的C數據結構| |thread|表示執行的獨立線路,用于執行協同程序| |table|Lua 中的表(table)其實是一個"關聯數組"(associative arrays),數組的索引可以是數字或者是字符串。在 Lua 里,table 的創建是通過"構造表達式"來完成,最簡單構造表達式是{},用來創建一個空表 local tbl1 = {}。| 2) 變量 Lua的變量分為全局變量和局部變量。全局變量無需聲明就可以直接使用,默認值是nil。如: ~~~ a = 5 -- 為全局變量a賦值 print(b) -- 無需聲明即可使用,默認是nil a = nil -- 刪除全局變量a的方法是將其賦值為nil,全局變量沒有聲明和未聲明之分,只有nil和非nil的區別 ~~~ 而在Redis腳本中不能使用全局變量,只允許使用局部變量以防止腳本之間相互影響。用 local 顯示聲明為局部變量。 ~~~ local c -- 聲明一個局部變量,默認值是nil local d=1 -- 聲明一個局部變量d并賦值為1 local e,f -- 可以同時聲明多個局部變量 ~~~ 同時聲明一個存儲函數的局部變量的方法為: ~~~ local say_hi = function() print 'hi' end ~~~ 變量名必須是非數字開頭,只能包含字母、數字和下劃線,區分大小寫。變量名不能與Lua的保留關鍵字相同。 局部變量的作用域為從聲明開始到所在層的語句塊末尾,比如: ~~~ local x=10 if true then local x=x+1 print(x) do local x=x+! print(x) end end print(x) ~~~ 結果為: ~~~ 11,12,11,10 ~~~ 3) 注釋 Lua的注釋有單行和多行兩種。單行注釋以--開始,到行尾結束,一般習慣在--后面跟上一個空格。多行注釋以--[[ 開始,到]]結束。 4) 賦值 Lua支持多重賦值,在執行多重賦值時,Lua會先計算所有表達式的值.如 local a,b = 1,2 -- a的值是1,b的值是2 local c,d = 1,2,3 -- c的值是1,d的值是2,3被舍棄了 local e,f=1 -- e的值是1,f的值是nil 5) 操作符 ①數學操作符:如+,-,*,/,%(取模)等 數學操作符的操作數如果是字符串會自動轉換成數字,比如 print('1' + 1) -- 2 ②比較操作符:如==,~=, <,>等 比較操作符的結果一定是布爾類型。比較操作符不同于數學操作符,不會對兩邊的操作數進行自動類型轉換,需要手動進行類型轉換,也就是說; print(1 == '1') -- false print({'a'} == {'a'}) -- false,對于表類型值比較的是二者的引用 print(1== tonumber('1')) -- true ③邏輯操作符:如not,and,or 只要操作數不是nil或false,邏輯操作符就認為操作數是真,否則是假。特別需要注意的是即使是0或空字符串也被當作真。 print(1 and 5) -- 5 a and b,如果a是真則返回b,否則返回b print(1 or 5) -- 1 a or b,如果a是真則返回a, print(not 0) -- false 根據操作數的真假返回true和false ④連接操作符:只有一個:..。用來連接兩個字符串,連接操作符會自動把數字類型的值轉換成字符串類型.如 print('hello' .. ' ' .. 'world!') -- 'hello world!' ⑤取長度操作符。只有一個:#。用來獲取字符串或表的長度 print(#'hello') -- 5 * * * * * https://blog.csdn.net/oChangWen/article/details/53456099 https://www.cnblogs.com/huangxincheng/p/6230129.html
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看