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