当前位置:   article > 正文

lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合_lua脚本zset获取元素

lua脚本zset获取元素

lua脚本获取table类型-Java使用lua脚本操作redis获取zset元素的集合

7.0点赞功能-定时持久化到数据库-lua脚本的编写_哔哩哔哩_bilibili

https://www.bilibili.com/video/BV1bu411j75u

这个脚本主要是放到Springboot工程里的,

local prefix = KEYS[1]; 
local redisKeys = redis.call('keys',prefix ..'*');

if(not redisKeys) 
    then    
    	return (nil);
end;

local maps = {};

for i, v in pairs(redisKeys) do
    local blogId = string.sub(v,string.len(prefix) + 1,string.len(v));
    local zset = redis.call('zrange',v,'0','-1','withscores');
    table.insert(maps,blogId);
    table.insert(maps,zset);    
end;

return maps;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

这里如果是向放到字段控制台执行,那就要加入eval关键字以及其他参数:

eval "
local prefix = KEYS[1]; 
local redisKeys = redis.call('keys',prefix ..'*');

if(not redisKeys) 
    then    
    	return (nil);
end;

local maps = {};

for i, v in pairs(redisKeys) do
    local blogId = string.sub(v,string.len(prefix) + 1,string.len(v));
    local zset = redis.call('zrange',v,'0','-1','withscores');
    table.insert(maps,blogId);
    table.insert(maps,zset);    
    
end;

return maps;
" 1 BLOG_LIKED_KEY
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

返回的变量是maps,已经是table类型。

table类型在lua脚本中可以代表是数组,也可以是以键值对的Map集合。

但是如果是要在redis的终端来执行lua脚本的话,这里一定要使用table.insert方法来将数据插入到要返回的那个maps变量里面,这样的table类型才可以返回。

table.insert这个方法应该是maps成为table类型的数组形式吧。本来想用maps[key]=val这种形式,发现根本走不通,也就是return时没办法返回这种类型的数据,也就是没办法返回以键值对存储的Map集合类型的数据。

另外调试工具网上大多数都是用print这个函数,笑死,好像都没讲可以在redis终端控制台中执行lua脚本的打印语句,这个print是行不通的,所以就用return来测试吧,将就用吧,另外type函数也是好用的api,可以查看lua语言里的数据类型。

怎么在Springboot工程使用这种lua脚本,就看:

(108条消息) springboot+redis+mysql+quartz-通过Java操作jedis定时使用lua脚本获取缓存数据并更新数据库_xin麒的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/351602
推荐阅读
相关标签
  

闽ICP备14008679号