Redis-Lua脚本调试教程

Redis-Lua脚本调试环境配置


文章目录


前言

在分布式系统中要保证数据的原子性,采用Redis+Lua脚本的方式是比较好的选择,但是Lua脚本的调试又是一件很让人头痛的事情。下面我给大家分享一下我目前使用到的一种lua调试方式


一、Lua环境下载

下载lua5.4

  1. 下载路径:https://luabinaries.sourceforge.net/download.html

  2. 点击下载,点击之后要稍微等一会儿才会下载。

  3. 等待下载完毕

  4. 在C 盘中 Program Files文件夹中创建一个名为Lua的文件夹

  5. 把下载的文件解压然后把lua-5.4.8_Win64_bin的文件全部复制到我们创建的Lua文件夹中然后用dllw6_lib这个替换lua里面的dll。

下载 Luarocks

  1. 下载路径:https://luarocks.github.io/luarocks/releases/
  2. 等待下载完毕

    3.在C 盘以外中 Program Files文件夹中创建一个名为Lua的文件夹,把解压出来的
  • lua-5.4.8_Win64_bin
  • lua-5.4.8_Win64_dllw6_lib
  • luarocks-3.12.2-windows-64

文件按顺序复制到Lua文件夹中

环境变量配置

  1. lua 环境变量配置(选中path,然后点击新建,把lua存放的路径写进去,也就是我们上面设置的:D:\Lua)

二、vs code 配置

下载扩展

修改配置

修改vs code中setting.json中的配置,把lua,改为我们下载的lua54

调试项目

项目结构如下,其中lib和lua文件夹为调试所需要的一些包,不用管他。我们只需要把需要调试的lua脚本放入test文件夹里就可以了,然后在main里进行配置调试那个lua脚本,并模拟传入的参数即可

(后面会附赠下载项目的链接)

main脚本中的相关代码

c 复制代码
--#region 定义库路径
package.cpath = "./libs/5.4/lib/?.dll;"
package.path = "./libs/5.4/lua/?.lua;./?.lua"
--#endregion
local redis = require('redis_env')
--#region 连接redis
local params = {
    host = '127.0.0.1',
    port = 6379,
    password = 'redis!2#',
    db = 0,
}
redis.connect(params)
--#endregion
--#region 需要调试的lua脚本文件名称
local test_file = './test/BalanceUpdate.lua'
--#endregion
--#region 模拟脚本所需要的参数
local keys = { 'balance:sp:sms' }
local argv = { '111112', '10', '0', '1' }
--#endregion
--#region 调用进行调试
local result = redis.runLuaFile(test_file, keys, argv)
--#endregion
print(table.unpack(result))

单步调试

选中项目中的main.lua然后点击Debug File

比如我们在脚本中打个断点

在我们进行调试的时候就可以看到里面执行的时候的数据运转详情了

三、 调试项目下载

下载链接:资源下载传送门


总结

以上就是我今日分享的内容,希望对各位有用。

相关推荐
醉颜凉4 小时前
Redis网络层解析:高性能服务器架构设计与实现
redis·epoll·网络架构·i/o多路复用·事件驱动
醉颜凉4 小时前
Redis 与 Pika 对比:大容量冷热数据落盘方案与混合存储架构
redis·pika·混合存储·存储架构·冷热数据分离
SkyWalking中文站5 小时前
BanyanDB 0.11.0:新特性与升级指南
数据库
₍˄·͈༝·͈˄*₎◞ ̑̑码6 小时前
MyBatis操作数据库
数据库·mybatis
刃神太酷啦8 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
三8448 小时前
SSRF 打内网 Redis:gopher 原理与实操
redis·web安全·bootstrap·ssrf
丁丁点灯o8 小时前
Oracle中使用外键的场景及不适用外键的情况
数据库·oracle
天天进步20158 小时前
Pixelle-Video 源码解析 #18:声音克隆功能:参考音频如何影响解说效果?
数据库·音视频
youm20038 小时前
认识Redis
redis·笔记·学习
不懂的浪漫9 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库