iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >redis中怎么使用lua脚本
  • 848
分享到

redis中怎么使用lua脚本

2024-04-02 19:04:59 848人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关Redis中怎么使用lua脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:Lua脚本说来也巧,redis的大老板给了你解决这种问题的方法,那就是L

这篇文章给大家分享的是有关Redis中怎么使用lua脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一:Lua脚本

说来也巧,redis的大老板给了你解决这种问题的方法,那就是Lua脚本,而且redis的最新版本也支持Lua Script debug,这应该也是未来Redis的一

个发展趋势,要想学好Redis,必会Lua Script。。。

redis中怎么使用lua脚本

有趣的是,官网上还提供了一个视频教程教你如何进行Debug操作。。。 【https://redis.io/topics/ldb】 youtube上面的视频,要是被墙了,记得

上VPN哦。。。淘宝上不知道有没有售卖这种同款的吸顶灯~~~

redis中怎么使用lua脚本

二:使用Redis-Cli Lua Script 解决几个灵活性问题

1. Lua语法的问题

lua是一门编程语言,所以这个就已经超出了redis本身的范畴,如果大家想好好学习一下,可以看下Http://www.lua.org/ 的官网,然后下载一下玩一玩。

redis中怎么使用lua脚本

比如这里我下载了一个windows版本的lua 编译器,具体语法上就不细说了。。有了这个主题,我们再进行下一个环节。

redis中怎么使用lua脚本

2. Eval的使用

EVAL script numkeys key [key ...] arg [arg ...]

首先大家一定要知道eval的语法格式,其中:

<1> script: 你的lua脚本

<2> numkeys: key的个数

<3> key: redis中各种数据结构的替代符号

<4> arg: 你的自定义参数

ok,可能乍一看模板不是特别清楚,下面我可以用官网的小案例演示一下:

eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 username age jack 20

上面这一串代码大概是什么意思呢? 第一个参数的字符串就是script,也就是lua脚本。2表示keys的个数,KEYS[1] 就是 username的占位符, KEYS[2]就是

age的占位符,ARGV[1]就是jack的占位符,ARGV[2]就是20的占位符,,以此类推,,,所以最后的结果应该就是:{return username age jack 20} 是不

是有点像C#中的占位符:{0}呢???下面我在Redis中给大家演示一下:

[root@localhost Desktop]# redis-cli
127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 username age jack 20
1) "username"
2) "age"
3) "jack"
4) "20"
127.0.0.1:6379>

通常境况下,我们不要在redis-cli中直接写lua脚本,这样非常不方便编辑,通常情况下我们都是把lua script放到一个lua文件中,然后执行这个lua脚本,比如

下面这样:

redis中怎么使用lua脚本

然后我们通过下面命令执行,这种方式和前面介绍的不一样,参数 --eval script key1 key2 , arg1 age2 这种模式,key和value用一个逗号隔开就好了,

最后我们也看到了,数据都出来了,对吧。

[root@localhost Desktop]# redis-cli --eval /usr/redis/sbin/1.lua username age , jack 20
1) "username"
2) "age"
3) "jack"
4) "20"
[root@localhost Desktop]#

三:实战

下面我可以构思几个小案例通过lua解决。

1. 通过lua脚本获取指定的key的List中的所有数据

local key=KEYS[1]

local list=redis.call("lrange",key,0,-1);

return list;

这里面的redis.call就是用来执行redis中list的lrange命令,接下来我通过lpush给person塞入三条数据,如下:

[root@localhost Desktop]# redis-cli
127.0.0.1:6379> lpush person mary jack peter
(integer) 3
127.0.0.1:6379>

然后我们来执行这个lua脚本,效果如下图,是不是很牛逼的感觉???

redis中怎么使用lua脚本

有了这个1+1的效果,就可以玩些更复杂的操作。比如:

2.根据外面传过来的IDList 做“集合去重”的lua脚本逻辑:

local key=KEYS[1];
local args=ARGV
local i=0;
local result={};
 for m,n in ipairs(args) do

 local ishit=redis.call("sismember",key,n);

 if(ishit) then
  table.insert(result,1,n);
 end

 end

return result;

2. 找到hash中age小于指定值的所有数据,lua脚本如下:

local result={};
local myperson=KEYS[1];
local nums=ARGV[1];

local myresult =redis.call("hkeys",myperson);

for i,v in ipairs(myresult) do
 local hval= redis.call("hget",myperson,v);
 redis.log(redis.LOG_WARNING,hval);
 if(tonumber(hval)<tonumber(nums)) then
  table.insert(result,1,v);
 end
end

return result;

感谢各位的阅读!关于“redis中怎么使用lua脚本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: redis中怎么使用lua脚本

本文链接: https://www.lsjlt.com/news/54994.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis中怎么使用lua脚本
    这篇文章给大家分享的是有关redis中怎么使用lua脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:Lua脚本说来也巧,redis的大老板给了你解决这种问题的方法,那就是L...
    99+
    2022-10-18
  • Java生态/Redis中怎么使用Lua脚本
    本篇内容主要讲解“Java生态/Redis中怎么使用Lua脚本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java生态/Redis中怎么使用Lua脚本”吧!一、安装LUAMac上安装LUA很简...
    99+
    2023-07-05
  • redis中lua脚本使用教程
    目录一、背景二、使用lua脚本三、lua和redis数据类型转换四、lua脚本中输出日志五、一个简单限流的案例六、lua脚本的debug七、参考文档一、背景 在使用redis的过程中...
    99+
    2022-11-12
  • redis怎么加载lua脚本
    redis加载lua脚本的示例:基本用法:EVAL script numkeys key [key ...] arg [arg ...]numkeys 是key...
    99+
    2022-10-17
  • redis怎么执行lua脚本
    小编给大家分享一下redis怎么执行lua脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!从redis 2.6.0版本开始,redis内置了Lua解释器,并提供...
    99+
    2023-06-21
  • Redis中Lua脚本有什么用
    这篇文章给大家分享的是有关Redis中Lua脚本有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。redis lua 脚本相关命令这一小节的内容是基本命令,可粗略阅读后跳过,...
    99+
    2022-10-18
  • Java生态/Redis中如何使用Lua脚本
    文章目录 一、安装LUA1)简单使用 二、lua语法简介1、注释1)单行注释2)多行注释 2、关键字3、变量1)全局变量2)局部变量 4、数据类型1)Lua数组2)字符串操作 5、if-else6、循环1)fo...
    99+
    2023-08-19
    lua java redis
  • PHP和Redis中的LUA脚本使用方法
    PHP和Redis中的LUA脚本使用方法LUA 是一种轻量级的脚本语言,旨在提供高效的嵌入式扩展功能。Redis 是一种开源的 NoSQL 数据库,提供高效的键值存储和缓存功能。在 Redis 中使用 LUA 脚本可以大大提高数据处理效率和...
    99+
    2023-05-15
    PHP redis Lua脚本
  • 怎么用Redis Lua脚本实现ip限流
    这篇文章主要讲解了“怎么用Redis Lua脚本实现ip限流”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Redis Lua脚本实现ip限流”吧!引言分布式限流最关...
    99+
    2023-07-02
  • redis lua脚本原子性怎么保证
    Redis的Lua脚本可以通过EVAL命令来执行,执行期间是原子性的,可以保证多个命令的连续执行不会被其他客户端的命令插入。 在Re...
    99+
    2023-10-21
    lua redis
  • Redis中如何执行Lua脚本
    今天就跟大家聊聊有关Redis中如何执行Lua脚本,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前言Redis从2.6版本开始引入对Lua脚本的支持...
    99+
    2022-10-18
  • Redis使用lua脚本的案例分析
    这篇文章主要介绍了Redis使用lua脚本的案例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。版本:自2.6.0起可用。时间复杂度:取决...
    99+
    2022-10-18
  • Redis中Lua脚本的使用和设置超时
    目录EVAL命令简介eval格式特性执行流程关于脚本超时SCRIPT KILL 命令SHUTDOWN NOSAVE 命令参考Redis提供了Lua脚本功能来让用户实现自己的原子命令,...
    99+
    2022-11-12
  • springboot中使用redis并且执行调试lua脚本
    目录原因:1、创建一个基本的web项目2、配置redis3、测试redis 的lua脚本4、技术点5、调试方式1、进入服务关闭关闭正在运行的服务器2、从命令行启动redis3、在lu...
    99+
    2022-11-13
  • Redis中lua脚本实现及其应用场景
    目录1. Redis Lua脚本概述2. Redis Lua脚本的优势3. Redis Lua脚本的应用场景4. Redis Lua脚本的使用方法5. Java中使用redis的lua脚本5.1. 添加Redis依赖 在...
    99+
    2023-04-20
    Redis lua脚本 Redis lua
  • Redis调用Lua脚本及使用场景快速掌握
    目录一、阅读本文前置条件二、为什么需要Lua脚本三、学点Lua语法3.1.一个简单的例子3.2.仔细看下Lua脚本里的内容3.3. 复杂点的例子四、Lua脚本预加载五、一个修改 JS...
    99+
    2022-11-13
  • Redis进阶应用:Redis+Lua脚本实现复合操作
    一、引言Redis是高性能的key-value数据库,在很大程度克服了memcached这类key/value存储的不足,在部分场景下,是对关系数据库的良好补充。得益于超高性能和丰富的数据结构,Redis已...
    99+
    2022-10-18
  • 简介Lua脚本与Redis数据库的结合使用
    可能你已经听说过Redis 中嵌入了脚本语言,但是你还没有亲自去尝试吧? 这个入门教程会让你学会在你的Redis 服务器上使用强大的lua语言。 Hello, Lua! 我们的第一个Redis Lua ...
    99+
    2022-06-04
    脚本 数据库 简介
  • Redis事务模式和Lua脚本的原理是什么
    这篇文章主要介绍了Redis事务模式和Lua脚本的原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Redis事务模式和Lua脚本的原理是什么文章都会有所收获,下面我们一...
    99+
    2023-04-19
    redis lua
  • redis lua脚本实战和减库存的实现是怎样的
    这篇文章给大家介绍redis lua脚本实战和减库存的实现是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言我们都知道redis是高性能高并发系统必不可少的kv中间件,它以高性能,高并发著称,我们常常...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作