今天有个项目需要使用redis,并且有使用脚本的需求。但是因为之前没有写过,所以还有一点点不熟悉,今天记录一下。
原因:原子操作,redis会将整个脚本作为一个整体执行,中间不会被其他命令插入。
1、创建一个基本的web项目文件 ->新建 -> 项目,选择spring initializr ,勾选spring web 方便测试,最主要勾选 spring data redis,和下图一样
2、配置redis因为我是为了测试redis,所以直接使用的本地的redis,你可以替换成application.yaml,或者使用环境变量替换。
注: 你不配置的话默认值就是上面的
3、测试redis 的lua脚本先写个能方便测试的接口,因为我为了测试lua 的脚本执行,所以就没讲什么设计,直接验证脚本
这里要做的就是删除过期的key,同时移除hash中的key
再来看下lua脚本,这东西花了我不少的时间
4、技术点1、redis 传参可以有两个全局变量,一个KEYS,一个是ARGV
2、redis执行的lua 不可以有全局变量,因为会污染环境,所以这里的function 是local
3、lua没有线程的字符串拆分函数,上面的函数是我找些unity的同学从项目中扒出来的
4、lua 列表的下标从1 开始的
5、redis中执行的lua 是 事务性的
6、lua 会阻塞线程,如果脚本太耗时会卡主服务器
5、调试方式调试lua脚本是真的费劲,因为在redis desktop manage中不太好测试,下面说下怎么测试,如果你本机安装了redis。
1、进入服务关闭关闭正在运行的服务器 2、从命令行启动redis找到redis 在本机的安装路径,我的路径是 C:Program FilesRedis
打开命令行,输入下面的命令就能启动redis服务器了
3、在lua脚本中增加打印 4、运行代码调用lua脚本,就可以看到下面的输出了,如果你不想看了,就直接从服务启动redis就好了
注意:正式应用的时候把log 注释掉。
6、总结今天主要的时间耗费在lua 函数的定义,一直没有搞懂怎么调用,点有背,碰了好多次都没成功。
到此这篇关于springboot中使用redis并且执行调试lua脚本的文章就介绍到这了,更多相关springboot使用redis执行调试lua内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!