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();
執行結果

 

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章