草庐IT

lua-cjson

全部标签

Lua+Redis:分布式锁解决方案分享

介绍当我们涉及到多进程或多节点的分布式系统时,传统的单机锁机制不再足够应对并发控制的需求。这是因为在分布式环境中,多个进程或节点同时访问共享资源,传统锁无法有效地协调这种复杂的并发情况,这就引入了分布式锁,本文将一步一步引导大家使用lua脚本和redis实现分布式锁。理解分布式锁1、什么是分布式锁?分布式锁的是确保在多个进程或多个节点之间对共享资源的访问是有序、互斥和原子的,以避免竞态条件和数据不一致性问题。在多进程或多节点环境中,分布式锁广泛应用于协调共享资源的安全访问。2、Redis作为分布式锁的选择Redis(RemoteDictionaryServer)是一种高性能的开源内存数据库,因

523. 【Lua】类型和值(三)

一、表(Table)当调用函数math.sin时,我们可能认为是“调用了math库中函数sin”;而对于Lua语言来说,其实际含义是“以字符串"sin"为键检索表math”Lua语言中的表本质上是一种辅助数组(associativearray),这种数组不仅可以使用数值作为索引,也可以使用字符串或其他任意类型的值作为索引(nil除外)。使用构造器表达式(constructorexpression)创建表,其最简单的形式是{}:>a={}>k="x">a[k]=10>a[20]="great">a["x"]10>k=20>a[k]great>a["x"]=a["x"]+1>a["x"]11表永远

浅谈如何使用 github.com/yuin/gopher-lua

最近熟悉go项目时,发现项目中有用到github.com/yuin/gopher-lua这个包,之前并没有接触过,特意去看了官方文档和找了些网上的资料,特此记录下。本次介绍计划分为两篇文章,这一次主要介绍github.com/yuin/gopher-lua这个包的介绍以及基础使用,下一边将介绍github.com/yuin/gopher-lua是如何在项目中使用的。如有不对的地方,请不吝赐教,谢谢。文章中的gopher-lua如果没有特别说明,即为:github.com/yuin/gopher-lua。1、gopher-lua基础介绍我们先开看看官方是如何介绍自己的:GopherLuaisaL

【Lua】(一)VSCode 搭建 Lua 开发环境

前言最近在找工作,基本所有的岗位都会问到Lua(甚至拼UI的都要求会Lua),咱能怎么办呢,咱也只能学啊……工欲善其事,必先利其器。第一步,先来把环境配置好吧!当前适用版本:LuaBinaries版本:5.4.2VSCode版本:1.77.3文章最近更新日期:2023.04.24 一、下载LuaBinariesLua官网:TheProgrammingLanguageLua(本文中用不到)在官网找到LuaBinaries的下载链接:LuaBinaries(sourceforge.net),直接下载最新版本 下载完成后解压到对应的文件夹(自定义路径,根据自己习惯来就好)这里我使用的路径是 D:\L

「提效脚本 redis」 使用Lua批量删除key

在redis里面可以使用keysaa*进行匹配所有的key,却没办法直接删除所有匹配的key。所以可以使用lua脚本进行增强。以删除suggest*开头的key为例。eval"localkeys=redis.call('keys','suggest*')for_,keyinipairs(keys)doredis.call('del',key)end"0脚本分析:--删除Redis中所有已有'suggest'前缀的键值对localkeys=redis.call('keys','suggest*')for_,keyinipairs(keys)doredis.call('del',key)end这是

lua实现http的异步回调

想用lua实现与http服务器的通信,请求一些数据会回来,默认lua.socket.http是同步的,所以想弄一个异步的方式测试环境lua5.1同步以下是同步的代码,其中http.request会被阻塞住的localfunctionsend_request()localres,code,response_headers=http.request("http://www.lua.org/","POST","name=Lua&age=100",{["Content-Type"]="application/x-www-form-urlencoded"})print("code=",code)ends

tcp - 如何使用 openresty lua 中的第一个字节内容将 tcp 请求分派(dispatch)到后端

我已经启动了一个带有一个tcp服务器和两个后端的openresty。tcp服务器根据来自tcp流的内容将请求分派(dispatch)给后端。以下是openresty配置示例:stream{#defineaTCPserverlisteningontheport1234:upstreambackend1{server172.17.0.1:8081;}upstreambackend2{server172.17.0.1:8082;}server{listen1234;content_by_lua_block{localsock=ngx.req.socket(true)--reveivefirs

java - 跨 TCP 套接字与 ObjectInputStream、Java 和 Lua 客户端联网

我有一个Java服务器,它将有两种不同类型的客户端,一个是基于Java的控制台,一个是服务器将控制的基于Lua的客户端。我让Lua客户端来回交谈out=newPrintWriter(socket.getOutputStream(),true);in=newBufferedReader(newInputStreamReader(socket.getInputStream()));我现在正在尝试连接一个基于Java的客户端,我想使用out=newObjectOutputStream(newBufferedOutputStream(socket.getOutputStream()));in=

sockets - 从没有数据大小的lua tcp套接字接收数据

我一直在使用到游戏服务器的套接字tcp连接。这里最大的问题是游戏服务器发送数据时没有任何分隔符——因为它发送的数据包长度在数据内——这使得无法使用socket:receive("*a")或"*l"。从服务器接收到的数据没有静态大小,并以十六进制格式发送。我正在使用这个解决方案:whiletruedolocalrect,r,st=socket.select({_S.sockets.main,_S.sockets.bulle},nil,0.2)fori,coninipairs(rect)doresp,err,part=con:receive(1)ifresp~=nilthendataRec

sockets - 运行时 addeventlistener 使用 Corona 减慢 Lua 中的应用程序显示

根据下面的代码,如何在不中断应用程序显示部分的情况下运行运行时监听器?目前,当我使用运行时监听器时,显示速度变慢了。仅供引用,我是Lua/Corona的新手,也是stackoverflow的新手。functionscene:createScene(event)group2=scrollView.new{top=topBoundary,bottom=bottomBoundary}myImage=display.newImage("imgbg1.png")myImage.isVisible=truegroup2:insert(myImage)localyval=120socket,err=