ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] Lua脚本-介绍 Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放。 ***** 其设计目的就是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。因为广泛的应用于:游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件等。 ***** 比如:Lua脚本用在很多游戏上,主要是Lua脚本可以嵌入到其他程序中运行,游戏升级的时候,可以直接升级脚本,而不用重新安装游戏。 >[info] Lua优缺点 **好处:** 1.减少网络开销 2.原子操作 3.复用 **缺点:** 1.Nil字符问题 2.没有好的垃圾回收机制 >[info] Lua脚本-相关命令 执行lua脚本: ``` eval script numkeys key [key ...] arg [arg ...] ``` 执行lua脚本: ``` eval sha1 numkeys key [key ...] arg [arg ...] ``` 查看指定的脚本是否已经被保存在缓存当中。 ``` SCRIPT EXISTS sha1 [sha1 ...] ``` 从脚本缓存中移除所有脚本。 ``` SCRIPT FLUSH ``` 杀死当前正在运行的 Lua 脚本。 ``` SCRIPT KILL ``` 将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本。 ``` SCRIPT LOAD script ``` >[info] Lua脚本-相关语法 Lua的变量分为全局变量和局部变量。全局变量无需声明就可以直接使用,默认值是nil。 ***** a = 5 定义一个全局变量 Print(b) A=nil ***** Local c 定义一个局部变量 ***** 变量名必须是非数字开头,只能包含字母、数字和下划线,区分大小写。变量名不能与Lua的保留关键字相同。 >[info] lua脚本应用场景 **laravel+Redis-lua脚本-限流漏桶算法:** 漏桶(Leaky Bucket)算法的实现思路比较简单,水(请求)先流入到桶中,然后桶以一定的速度出水(接口有响应速率),当水流过大时(访问频率超过设置的阈值),系统服务就会拒绝请求。强行限制系统单位时间内访问的请求量。 ***** 漏桶算法有两个关键变量:桶的大小和出水速率,他们共同决定了单位时间内系统能接收的最大请求量。因为漏桶算法中桶的大小和出水速率是固定的参数。 ***** 我们模拟实现的功能是限制一个公司下对某一个接口的访问频次,示例中是限制公司name的员工列表接口/user/list在1s内能被外部访问100次。 ***** Redis中设置接口限制1s内访问100次的hash: