bull 使用 lua 脚本执行各种任务,ioredis的defineCommand方法将lua脚本定义成redis client的方法
Redis 保证脚本的原子执行。执行脚本时,所有服务器活动在其整个运行期间都会被阻止。
这些语义意味着脚本的所有效果要么尚未发生,要么已经发生。
可以直接通过 client 来调用脚本
client.addJob(keys);
queue.client.moveToActive(keys.concat(args)).then(raw2jobData);
job.queue.client.moveToFinished(args)
queue.client.moveToDelayed(args)
命名
所有的 lua 脚本都放置在 lib/commands 目录下
脚本文件名称格式为{name}-{key count}.lua,name是调用脚本的方法名称,key count是脚本中key的数量
注册
延迟创建 redis client 时,会调用 commands 方法在 client