nodejs redis执行lua脚本
const Redis = require("ioredis");
const redis = new Redis({
port: 6300, // Redis port
host: '192.168.50.111', // Redis host
password: '123',
db: 0,
});
1.第一种执行lua脚本的方式
const result3 = redis.eval(`return redis.call('MSET', KEYS[1],ARGV[1], KEYS[2],ARGV[2])`, 2, ['testKey1', 'testKey2', 'val1', 'val2'])
async function eval() {
let str = await result3;
console.log(str)
// await redis.evalTest('testKey1', 'testKey2', 'val1', 'val2');
const result = await redis.get('testKey1');
const result2 = await redis.get('testKey2');
console.log(result, result2);
}
eval()
执行结果

参照: https://www.runoob.com/redis/scripting-eval.html

参照文档可知道: keys全部写在前面,中间2是key的数量,val值后面排着写
2.第二种执行Lua方式
const luaScript = `return redis.call('MSET', KEYS[1],ARGV[1], KEYS[2],ARGV[2])`;
redis.defineCommand("evalTest", {
numberOfKeys: 2,
lua: luaScript,
})
async function eval() {
await redis.evalTest('testKey1', 'testKey2', 'val1', 'val2');
const result = await redis.get('testKey1');
const result2 = await redis.get('testKey2');
console.log(result, result2); // val2
}
eval();
执行结果

nodejs redis执行lua脚本的更多相关文章
- PHP中使用redis执行lua脚本示例
摸索了一下在PHP中如何使用redis执行lua脚本,写了一个脚本如下,供以后参考 <?php $redis = new Redis(); #实例化redis类 $redis->conne ...
- SpringBoot + Redis 执行lua脚本
1.背景 有时候,我们需要一次性操作多个 Redis 命令,但是 这样的多个操作不具备原子性,而且 Redis 的事务也不够强大,不支持事务的回滚,还无法实现命令之间的逻辑关系计算.所以,一般在开发中 ...
- Redis执行Lua脚本的情况
第一个测试: 往Redis里面存入1000个Hash,每个Hash里面有100个元素(Key 0-99,值是Key^2). PHP代码,执行33s左右 <?php $redis = new Re ...
- Redis执行Lua脚本示例
Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行.使用脚本的好处如下: 1.减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在red ...
- redis之lua脚本
背景介绍 redis数据库提供了一些管理功能比如 流水线:打包发送多条命令,并在一个回复里面接收所有被执行命令的结果.事务:一次执行多条命令,被执行的命令要么就全部都被执行,要么就一个也不执行.并且事 ...
- Redis结合Lua脚本实现高并发原子性操作
从 2.6版本 起, Redis 开始支持 Lua 脚本 让开发者自己扩展 Redis … 案例-实现访问频率限制: 实现访问者 $ip 在一定的时间 $time 内只能访问 $limit 次. 非脚 ...
- redis(6)lua脚本
一.lua脚本 lua是一种轻量小巧的脚本语言,用标准的C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. lua的详细内容你可以参考lua官方网站 ...
- 【spring boot】【redis】spring boot基于redis的LUA脚本 实现分布式锁
spring boot基于redis的LUA脚本 实现分布式锁[都是基于redis单点下] 一.spring boot 1.5.X 基于redis 的 lua脚本实现分布式锁 1.pom.xml &l ...
- 使用jedis执行lua脚本
转: redis学习(十五) 使用jedis执行lua脚本(实现一个对IP的限流) 2018年09月15日 20:07:26 码农-文若书生 阅读数:1609 使用jedis执行lua脚本(实现一 ...
- .Net Core使用分布式缓存Redis:Lua脚本
一.前言 运行环境window,redis版本3.2.1.此处暂不对Lua进行详细讲解,只从Redis的方面讲解. 二.Redis的Lua脚本 在Redis的2.6版本推出了脚本功能,允许开发者使用L ...
随机推荐
- Python学习的第四次总结
修改文件内某行内容 f_read = open('文件名','r',encoding='utf-8')f_write = open('文件名1','w',encoding='utf-8')number ...
- mt5获取双色球
string cookie=NULL,headers; char post[],result[]; string ssq=""; string url="http://k ...
- java常用开发学习网站列表
持续更新中 kettle国内镜像下载 版本 地址 7.1版本 http://mirror.bit.edu.cn/pentaho/Data%20Integration/ 8.2版本 http://mir ...
- (0403)位运算符+interface
1)interface 2)位运算符
- 【PS】PS如何删除图片中的白字
[PS]PS如何删除图片中的白字 首先打开ps,然后导入要操作的图片,接着选择左边工具栏中的魔棒工具. 对所要操作的文字进行框选,可以按住shift键进行连续操作 点击上方工具栏中的选择 | 修改 | ...
- eval()
s='12*2'd=eval(s)#字符串运算函数print(d) 结果: 24
- -behaviour()的使用,他具体有什么作用
Eralng 编程中的OTP OTP里面创建进程时 常用有四大behaviour • supervisor • gen_server • gen_fsm • gen_event 在erlang的编译器 ...
- git命令,回滚上一个版本,回滚n个版本,撤销回滚
1 回滚到上一个版本 git checkout . :add之前的回滚 git reset --hard:add之后,commit之前 git reset --hard origin/test:com ...
- VMware VirtualCenter Servere服务不能启动
故障现象现象:VMware VirtualCenter Servere服务不能启动 解决办法:进入%programdata%\VMware\VMwareVirtualCenter\Logs目录下面. ...
- sql使用!=查询时会忽略null数据
table_a有3条数据 column1值分别为1,0,null 那么 select * from table_a where column1!='1' 只会查到clumn1为0的数据,null的数据 ...