• 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脚本

 Redis提供了EVAL命令可以使开发者像调用其他Redis内置命令一样调用脚本。

 [EVAL]  [脚本内容] [key参数的数量]  [key …] [arg …]

 可以通过key和arg这两个参数向脚本中传递数据,他们的值可以在脚本中分别使用KEYS和ARGV 这两个类型的全局变量访问。

 比如我们通过脚本实现一个set命令,通过在redis客户端中调用,那么执行的语句是:

 lua脚本的内容为: return redis.call(‘set’,KEYS[1],ARGV[1])         //KEYS和ARGV必须大写

 eval "return redis.call('set',KEYS[1],ARGV[1])" 1 hello world

 EVAL命令是根据 key参数的数量-也就是上面例子中的1来将后面所有参数分别存入脚本中KEYS和ARGV两个表类型的全局变量。

 当脚本不需要任何参数时也不能省略这个参数。如果没有参数则为0

 eval "return redis.call(‘get’,’hello’)" 0

最新文章

  1. [转]HDFS中JAVA API的使用
  2. Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
  3. js里实现队列与堆栈
  4. Xamarin开发Android笔记:使用ZXing进行连续扫描
  5. php中Closure::bind用法(手册记录)
  6. Instruments_Automation使用入门
  7. 名词解释:DRAM, SRAM, SDRAM等
  8. PHPCMS二次开发教程
  9. 融合python2和python3
  10. Android 6.0 新特性 整理 资料来自网络
  11. phonegap+emberjs+python手机店发展,html5实现本地车类别~
  12. .NET 十五岁,谈谈我眼中的.NET
  13. 史上最简单的js+css3实现时钟效果
  14. 从微软MVP到女儿开学--2017前半年小结
  15. DWZ富客户端框架(jQuery RIA framework)
  16. iOS - 如何得到UIImage的大小
  17. C# winform嵌入unity3D
  18. window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
  19. 接口开发-集成接口文档(swagger)
  20. EasyGui 学习文档【超详细中文版】

热门文章

  1. 【转】教你如何实现linux和W…
  2. 分布式文件系统MFS(moosefs)实现存储共享
  3. ./run.sh --indir examples/demo/ --outdir examples/results/ --vis
  4. mysql GROUP_CONCAT 可以将分组的字段进行拼接处理.
  5. lunix tomcat重启脚步
  6. linux的deamon后台运行
  7. 数据库 MySQL 之 基本概念
  8. ServletContext作用功能详解.RP
  9. Linux下的fdlisk - l 用法解析-入门篇
  10. Sharepoint2013搜索学习笔记之自定义结果显示模板(九)