redis lua调试,java使用lua脚本操作 redis

  redis lua调试,java使用lua脚本操作 redis

  ";")); String delLongKeys = webWebsocketRequestSet.stream().map((requestId) -> longHashKey + ":" + requestId).collect(Collectors.joining(";")); List<String> keys = Arrays.asList(shortHashKey, longHashKey); redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("redis/clear-local-key.lua"))); redisTemplate.execute(redisScript, keys, delShortKeys, delLongKeys); } catch (Exception e) { e.printStackTrace(); } return "sssssssss"; }}再来看下lua脚本,这东西花了我不少的时间

  

local short_hash_key = KEYS[1];local long_hash_key = KEYS[2];local del_short_hash_keys = ARGV[1];local del_long_hash_keys = ARGV[2]; local function tt_split(str,reps ) local resultStrList = {} string.gsub(str,[^..reps..]+,function ( w ) table.insert(resultStrList,w) end) return resultStrList endlocal del_short_key_list= tt_split(del_short_hash_keys,";")for i = 1, #del_short_key_list do local del_key = del_short_key_list[i]; redis.call("DEL", del_key) redis.call("HDEL", short_hash_key, del_key)end local del_long_key_list = tt_split(del_long_hash_keys,";")for i = 1, #del_long_key_list do local del_key = del_long_key_list[i]; redis.call("DEL", del_key) redis.call("HDEL", long_hash_key, del_key)end

 

  

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服务器了

  

redis-server.exe redis.windows.conf

 

  

 

  

3、在lua脚本中增加打印

redis.log(redis.LOG_WARNING, "last_tokens " .. last_tokens)

 

  

4、运行代码

调用lua脚本,就可以看到下面的输出了,如果你不想看了,就直接从服务启动redis就好了

 

  注意:正式应用的时候把log 注释掉。

  

 

  

 

  

6、总结

今天主要的时间耗费在lua 函数的定义,一直没有搞懂怎么调用,点有背,碰了好多次都没成功。

 

  到此这篇关于springboot中使用redis并且执行调试lua脚本的文章就介绍到这了,更多相关springboot使用redis执行调试lua内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • redis队列操作命令,redis 循环队列
  • redis队列操作命令,redis 循环队列,redis实现简单队列
  • redis部署应用服务器上,redis如何启动服务器
  • redis部署应用服务器上,redis如何启动服务器,搭建Redis服务器步骤详细介绍
  • redis缓存穿透和击穿解决方案,redis缓存穿透,缓存雪崩解决
  • redis缓存穿透和击穿解决方案,redis缓存穿透,缓存雪崩解决,redis缓存穿透解决方法
  • Redis缓存,redis和缓存
  • Redis缓存,redis和缓存,Redis缓存详解
  • redis的配置,启动,操作和关闭方法有哪些,关闭redis的命令,Redis的配置、启动、操作和关闭方法
  • redis的主从配置方法详解图,Redis主从配置
  • redis的主从配置方法详解图,Redis主从配置,redis的主从配置方法详解
  • redis界面工具,mac安装redis可视化工具
  • redis界面工具,mac安装redis可视化工具,推荐几款 Redis 可视化工具(太厉害了)
  • redis正确使用的十个技巧是什么,redis正确使用的十个技巧有哪些
  • 留言与评论(共有 条评论)
       
    验证码: