redis中使用lua脚本
2024-08-25 06:53:10
- Lua脚本:Lua是一个高效的轻量级脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
- 使用脚本的好处:
- 减少网络开销,在Lua脚本中可以把多个命令放在同一个脚本中运行。
- 原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。换句话说,编写脚本的过程中无需担心会出现竞态条件。
- 复用性,客户端发送的脚本会永远存储在redis中,这意味着其他客户端可以复用这一脚本来完成同样的逻辑 。
Lua在linux中的安装
- 到官网下载lua的tar.gz的源码包http://www.lua.org/versions.html
- tar -zxvf lua-5.3.5.tar.gz
- 进入解压的目录:cd lua-5.2.0
- make linux (linux环境下编译)
- make install
- 如果报错,说找不到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
最新文章
- [转]HDFS中JAVA API的使用
- Deep Learning入门视频(下)之关于《感受神经网络》两节中的代码解释
- js里实现队列与堆栈
- Xamarin开发Android笔记:使用ZXing进行连续扫描
- php中Closure::bind用法(手册记录)
- Instruments_Automation使用入门
- 名词解释:DRAM, SRAM, SDRAM等
- PHPCMS二次开发教程
- 融合python2和python3
- Android 6.0 新特性 整理 资料来自网络
- phonegap+emberjs+python手机店发展,html5实现本地车类别~
- .NET 十五岁,谈谈我眼中的.NET
- 史上最简单的js+css3实现时钟效果
- 从微软MVP到女儿开学--2017前半年小结
- DWZ富客户端框架(jQuery RIA framework)
- iOS - 如何得到UIImage的大小
- C# winform嵌入unity3D
- window服务器上mongodb的安装与如何将mongodb设置为服务,为mongodb设置管理用户,mongodb连接字符串配置
- 接口开发-集成接口文档(swagger)
- EasyGui 学习文档【超详细中文版】
热门文章
- 【转】教你如何实现linux和W…
- 分布式文件系统MFS(moosefs)实现存储共享
- ./run.sh --indir examples/demo/ --outdir examples/results/ --vis
- mysql GROUP_CONCAT 可以将分组的字段进行拼接处理.
- lunix tomcat重启脚步
- linux的deamon后台运行
- 数据库 MySQL 之 基本概念
- ServletContext作用功能详解.RP
- Linux下的fdlisk - l 用法解析-入门篇
- Sharepoint2013搜索学习笔记之自定义结果显示模板(九)