egg-redlock-plugin
v1.0.0
Published
distribute lock and support currency controller
Downloads
5
Maintainers
Readme
egg-bt-egg-redlock
依赖说明
依赖的 egg 版本
egg-bt-egg-redlock 版本 | egg 1.x --- | --- 1.x | 😁 0.x | ❌
开启插件
// config/plugin.js
exports.locker = {
enable: true,
package: 'egg-redlock',
};
使用场景
当你知道你的数据库可能不能承受很大的并发,但是你的项目却没有一个好的办法去控制请求的并发量,毕竟nodejs是异步IO,这个时候,你需要一个工具,为你的方法添加一个控制并发量的锁。
Usage
在你的任何Controller或者Service中,都可以很方便的添加锁,以下是一个示例:
// controller/user.js
'use strict';
const { Controller } = require('egg');
class UserController extends Controller {
async userDo() {
const { ctx, service } = this;
await ctx.lock('userDoResource', 300, 10);
await service.user.userDoSomething();
await ctx.unlock('userDoResource');
}
}
module.exports = UserController;
/**
* ctx.lock(resource, maxLocker, ?ttl)
* resource: 资源名称
* maxLocker: 最多几个请求可以获取到锁
* ?ttl: 可选参数,锁的超时时间
*
* ctx.unlock(resource)
* resource: 资源名称
* /
用法就是这么简单,接下来所有路由到 Userdo
这个控制器的请求,最多只能有300个请求同时访问业务层的userDoSomething()
方法。
ctx.lock = ctx.acquire
: 获取锁方法ctx.unlock = ctx.release
: 释放锁方法
详细配置
请到 config/config.default.js 查看详细配置项说明。
单元测试
提问交流
请到 issues 异步交流。