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 ...
随机推荐
- mysql5.7 不兼容问题
通过navicat工具导入psc数据库备份文件,报错如下,mysql版本5.7 执行如下语句不通过 DROP TABLE IF EXISTS `guard_user`; CREATE TABLE `g ...
- 前端之Vue day07 混入、插件、elementui、Router、Vuex
一.Props补充 1.父传子在子组件标签上起自定义属性 使用数组 就不演示了,太简单了 2.限制传入的数据类类型 使用对象 同样,展示过的 3.props补充 就是套对象,加以限制 props:{ ...
- Postman配置多环境请求地址
在使用Postman测试接口时,一个项目往往有多个环境(测试.正式等),请求不同环境的接口一般只是IP和端口不一样. 这时候我们可以定义多个环境变量,在接口地址中进行引用. 一.添加环境变量 1.点击 ...
- RabbitMQ管理界面使用之手动送数据
目录 1. 找到相应的队列, 点击进入详情 2. 找到Publish Message项,填写自定义数据 3. 发送数据 4. 发送成功 5. 接收 1. 找到相应的队列, 点击进入详情 2. 找到Pu ...
- 【rocky linux】firewalld切换到iptables 以及Failed to start IPv4 firewall with iptables.
关闭[firewalld],安装iptables并启动 #关闭自带 firewall systemctl stop firewalld systemctl mask firewalld#显示当前 fi ...
- 本地部署一套k8s集群
我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2 kubeadm方式部署.Kubeadm 是一个 K8s 部署工具,提供 kubea ...
- jdbc封装工具类(无连接池)
package com.huang; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepar ...
- 测试 SqlServer 数据库连接的简单办法
1.创建一个文件, 命名为"dba.udl". #保证后缀是.udl即可 2.双击它: 3.输入数据库地址"xxx.xxx.xxx.xxx,端口号&qu ...
- PyTables学习 (数据保存形式,对象树结构)
参考自http://www.pytables.org/usersguide/introduction.html PyTables的主要目的是提供一个好的操作HDF5文件的方法. HDF文件是分层数据格 ...
- PowerShell学习笔记五_模块
PowserShell其他技巧 1. 执行完一个ps1文件后,不回收 有一个场景,在fun.ps1中,仅仅写了一段 Funtion fun([String] input) { } 然后打开PowerS ...