egg-bt-egg-redlock
依赖说明
依赖的 egg 版本
egg-bt-egg-redlock 版本 | egg 1.x |
---|---|
1.x | 😁 |
0.x | ❌ |
开启插件
// config/plugin.jsexportslocker = enable: true package: 'egg-redlock';
使用场景
当你知道你的数据库可能不能承受很大的并发,但是你的项目却没有一个好的办法去控制请求的并发量,毕竟nodejs是异步IO,这个时候,你需要一个工具,为你的方法添加一个控制并发量的锁。
Usage
在你的任何Controller或者Service中,都可以很方便的添加锁,以下是一个示例:
// controller/user.js'use strict';const Controller = ; async { const ctx service = this; await ctx; await serviceuser; await ctx; }moduleexports = 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 异步交流。