• Redis中使用Lua脚本


    • Lua脚本:Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
    • 使用脚本的好处:
    1. 减少网络开销,在Lua脚本中可以把多个命令放在同一个脚本中运行。
    2. 原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件。
    3. 复用性,客户端发送的脚本会永远存储在redis中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑 。
    • Lua在linux中的安装

    1. 到官网下载lua的tar.gz的源码包http://www.lua.org/versions.html
    2. tar -zxvf lua-5.3.5.tar.gz
    3. 进入解压的目录:cd lua-5.2.0
    4. make linux  (linux环境下编译)
    5. make install
    6. 如果报错,说找不到readline/readline.h,

    可以通过yum命令安装 yum -y install readline-devel ncurses-devel
    
    安装完以后再  make linux  / make install
    
    最后,直接输入 lua命令即可进入lua的控制台

     

    • 基础
    全局变量:a=1
    
    局部变量:local  a=2
    
    逻辑表达式:+  -  *  /  %
    
    比较两个值是否相等:a==b
    
    不等于:~=
    
    类型不能够自动转换
    
    逻辑运算符:and/or
    
    逻辑非:not(a and b)

    字符串拼接:a..b
    
    计算字符长度:#

      • 循环:
    for i=1,100 do
      print(i)
    end
      • 遍历数组:
    local xx={"a","b","c"}
    for  i,v  in   ipairs(xx)  do print(v)  end
      • 注释:
    范围注释:--[[ ]]  
    单行注释:-- 
      • 函数:
    local add(a,b)
    return a+b
    end
    print(add(1,2))
    • redis中执行lua脚本

     1 Redis提供了EVAL命令可以使开发者像调用其他Redis内置命令一样调用脚本。
     2 
     3 [EVAL]  [脚本内容] [key参数的数量]  [key …] [arg …]
     4 
     5 可以通过key和arg这两个参数向脚本中传递数据,他们的值可以在脚本中分别使用KEYS和ARGV 这两个类型的全局变量访问。
     6 
     7 比如我们通过脚本实现一个set命令,通过在redis客户端中调用,那么执行的语句是:
     8 
     9 lua脚本的内容为: return redis.call(‘set’,KEYS[1],ARGV[1])         //KEYS和ARGV必须大写
    10 
    11 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 hello world
    12 
    13 EVAL命令是根据 key参数的数量-也就是上面例子中的1来将后面所有参数分别存入脚本中KEYS和ARGV两个表类型的全局变量。
    14 
    15 当脚本不需要任何参数时也不能省略这个参数。如果没有参数则为0
    16 
    17 eval "return redis.call(‘get’,’hello’)" 0
    View Code

     

     

  • 相关阅读:
    html 中 #include file 的用法
    人人网FED CSS编码前端开发规范
    (转载)css垂直水平居中的整理
    CSS负边距自适应布局三例
    (转载)无缝滚动图片的js和jquery两种写法
    用css3实现鼠标移进去当前亮其他变灰
    应急响应
    扫描工具介绍
    入侵检测
    安全防护与加固
  • 原文地址:https://www.cnblogs.com/LJing21/p/10600013.html
Copyright © 2020-2023  润新知