`
y806839048
  • 浏览: 1126290 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

lua脚本

阅读更多

Lua是一个小巧的脚本语言由标准C编写而成, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能.Lua和redis搭配使用也可以应对高并发等业务.

1.Lua语法
Lua是一个对大小写敏感的语言.
Lua中有八种基本类型:nil,boolean,number,string,function,userdata,thread,table. Nil类型只有一种值nil,它的主要用途用于标表识和别的任何值的差异.
–和–[[]]–是注释

1、1控制语句
if else语句
if a==1 and b==1 then
elseif c>1 or d~=1 then
else
end

while循环
a=0
while a<= 100 do end for循环 for a = 0,100,2 do end until循环 a = 2 repeat print(a) until a>100

1、2函数
aaa = function(a) return a^2 end
function aaa(a)
if a < 2 then return 1 end return aaa(n - 2) + aaa(n - 1) end

1、3Table
aaa = {name=”hello”,age=11,handsome=True}
aaa.name = “hello”
aaa.age = 11
aaa.handsome = True

1、4全局变量
_G.aaa
_G[“aaa”]
for k, v in pairs(t) do
print(k, v)
end

1、5模块
直接使用require(“model_name”)来载入别的lua文件

官网中文文档http://manual.luaer.cn/

2.redis应用Lua
文档地址https://www.github.com/phpredis/phpredis
由于redis eval和lua是队列运行,能够承受高并发问题,而且请求也可以合并一个,减少服务器之间的通信。
列如:
$unique_redis_rand = <<<_ --获得已经抽了多少次 local now_num = tonumber(redis.call("hget","lotterycount_$event_id","$rand_con_id")) --获得一天抽奖次数 local now_num_day = tonumber(redis.call("hget","lotterycount_$event_id","$rand_con_id_day")) --获得个人抽奖次数 local now_num_user = tonumber(redis.call("hget","lotterycount_$event_id","$userid")) --判断是否开始 if not now_num then now_num = 0 end --一天限额如果没有默认0 if not now_num_day then now_num_day = 0 end --判断抽奖是否超过总限额 if now_num >= $rand_con_total then
return 0
–判断抽奖是否超过日限额
elseif now_num >= $now_total then
return 0
–判断抽奖是否超过规定日限额
elseif now_num_day >= $now_total_day then
return 0
–判断用户是否还有资格
elseif now_num_user <= 0 return 0 else --减掉用户次数 --这块也可以加上在redis队列取出礼包放入用户属性中,或者其他操作 return {1,redis.call("hincrby","lotterycount_$event_id","$userid","-1")} end _; $return = $redis->eval($unique_redis_rand);

//防IP刷Lua脚本形式
$date_mobile = “13200000000”;
$date_json = “hello word”;
$user_ip = ‘127.0.0.1’;
$date_cname = ‘test’;

$key_ip = ‘gus_ban_’.$user_ip;
$key_mobile = ‘gus_mobile_’.$date_cname;
$key_con = ‘gus_link’;
//lua start
$lua_cont = <<<_ local ip_num = redis.call("incr",KEYS[1]) if ip_num >= 100 then
return 2
end
if ip_num == 1 then
redis.call(“expire”,KEYS[1],”60″)
end
local mobile_not = redis.call(“sismember”,KEYS[2],ARGV[1])
if mobile_not == 0 then
redis.call(“sadd”,KEYS[2],ARGV[1])
redis.call(“lpush”,KEYS[3],ARGV[2])
return 1
else
return 3
end
_
;
$return = Redis::eval($lua_cont,3,$key_ip,$key_mobile,$key_con,$date_mobile,$date_json);
//lua end

分享到:
评论

相关推荐

    lua脚本执行行数和次数统计Dll

    "lua脚本执行行数和次数统计Dll"就是这样一个工具,它能够帮助开发者分析lua脚本的运行行为,提供关于脚本执行的详细信息。 这个Dll动态链接库专门设计用于统计lua脚本的执行行数和次数。通过加载这个Dll,你可以...

    LUA脚本|LUA脚本支持库

    LUA脚本是一种轻量级的、嵌入式的脚本语言,因其简洁的语法和高效性能,被广泛应用于游戏开发、服务器配置、自动化任务等多个领域。LUA脚本支持库则是为了扩展LUA的功能,提供更丰富的API和工具,使得开发者能够更...

    delphi调用lua脚本的一个例子

    在本文中,我们将深入探讨如何在Delphi编程环境中调用Lua脚本,以实现更灵活的逻辑处理和功能扩展。Delphi是一款强大的Object Pascal集成开发环境(IDE),而Lua则是一种轻量级、高效的脚本语言,常用于游戏开发和...

    基于串口屏LUA脚本—系统参数设置功能V1.0.pdf

    标题《基于串口屏LUA脚本—系统参数设置功能V1.0》所涉及的知识点主要集中在如何使用LUA脚本语言来设置和控制串口屏上的系统参数。串口屏一般指的是一种可以通过串行通信接口连接的显示设备,其上可以运行LUA脚本,...

    Lua 脚本

    Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。 Lua由...

    游戏引擎HGE结合Lua脚本 教程.zip

    这个“游戏引擎HGE结合Lua脚本 教程.zip”压缩包提供了关于如何利用HGE与Lua进行游戏编程的详细指导。 首先,我们来看“LUA语言学习教程+lua小脚本还是很像bash shell的.txt”。Lua是一种轻量级的脚本语言,以其...

    STM32F103 运行lua脚本例程.rar

    在本例程中,STM32F103被用于运行Lua脚本,这是一种轻量级的、可嵌入式的脚本语言,通常用于游戏开发、自动化任务和快速原型设计。 Lua的移植意味着将Lua解释器的源代码修改和编译,使其能在STM32F103的硬件平台上...

    Lua脚本语言在自动测试中的应用

    【Lua脚本语言在自动测试中的应用】 Lua是一种轻量级的脚本语言,因其高效、易用和可扩展性而在自动测试领域中得到广泛应用。它允许开发者快速编写测试脚本,实现对软件和硬件的自动化测试,从而提高测试效率,减少...

    visual c++ HGE游戏引擎+Lua脚本的结合使用.zip

    《Visual C++与HGE游戏引擎与Lua脚本的整合应用》 在游戏开发领域,高效的游戏引擎和灵活的脚本语言是不可或缺的工具。Visual C++作为一款强大的编程环境,常常被用于游戏的底层系统构建,而HGE(Happy Game Engine...

    SpringBoot+Redis执行lua脚本的方法步骤

    SpringBoot+Redis 执行 Lua 脚本的方法步骤 以下是 SpringBoot+Redis 执行 Lua 脚本的方法步骤的知识点总结: 1. 背景:在开发中,我们需要一次性操作多个 Redis 命令,但是这些操作不具备原子性,而 Redis 的事务...

    基于Lua脚本语言的嵌入式UART通信的实现

    "基于Lua脚本语言的嵌入式UART通信的实现" 本文提出了一种基于Lua脚本语言的解决方案,旨在提高IED装置对各种类型串口数据报文帧格式的适应性。该方案将具体串口报文规约的组建和解析交给Lua脚本进行处理,使设计者...

    excel表转Lua脚本工具

    《Excel表转Lua脚本工具详解》 在IT行业中,数据转换是一项常见的任务,尤其当涉及到配置文件或者游戏脚本时。Lua作为一种轻量级、高效且易读的脚本语言,常被用于游戏开发和其他配置文件的编写。然而,手动编写Lua...

    lua脚本源码包

    这个"lua脚本源码包"提供了lua在嵌入式开发中的应用实例,特别适合那些希望学习如何在Windows XP环境下,使用Visual Studio 2008进行lua脚本开发的初学者。 首先,我们要了解Lua的基本概念。Lua是一种解释型语言,...

    window系统 Lua脚本语言编译器

    标题提到的“window系统 Lua脚本语言编译器”实际上指的是用于在Windows平台上运行和编译Lua脚本的工具。 Lua的编译器主要是`luac.exe`,它将Lua源代码转换为字节码,这是一种中间表示,可以在Lua虚拟机上直接执行...

    Java调用Lua脚本(LuaJava使用、安装及Linux安装编译)

    Java调用Lua脚本是一种常见的跨语言交互技术,特别是在游戏开发和自动化脚本编写中。本文将详细介绍如何在Java环境中使用LuaJava库进行交互,并在Linux系统上进行安装和编译。 首先,让我们理解LuaJava。LuaJava是...

    android Lua脚本 文件

    本文将深入探讨如何在Android环境中运行Lua脚本,执行Lua脚本文件,以及如何调用Android API,以实现与Android系统的深度交互。 一、Android上的Lua环境 在Android上运行Lua,首先需要集成一个支持Lua的库,如...

    Lua脚本支持库

    "Lua脚本支持库"指的是为Lua提供额外功能或便利的库,这些库可以扩展Lua的基本功能,使其能够处理更复杂的任务。下面将详细探讨Lua脚本支持库及其相关知识点。 1. **元编程能力**:Lua的核心特性之一是强大的元表和...

Global site tag (gtag.js) - Google Analytics