nodejs redis執(zhí)行l(wèi)ua腳本
const Redis = require("ioredis");
const redis = new Redis({
port: 6300, // Redis port
host: '192.168.50.111', // Redis host
password: '123',
db: 0,
});
1.第一種執(zhí)行l(wèi)ua腳本的方式
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()
執(zhí)行結(jié)果
參照: https://www.runoob.com/redis/scripting-eval.html

參照文檔可知道: keys全部寫在前面,中間2是key的數(shù)量,val值后面排著寫
2.第二種執(zhí)行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();
執(zhí)行結(jié)果

浙公網(wǎng)安備 33010602011771號(hào)