+6
-6
@@ -9,5 +9,5 @@ 'use strict'; | ||
| if (redis) { | ||
| const val = await redis.config('get', 'notify-keyspace-events') | ||
| const val = await redis.config('get', 'notify-keyspace-events') | ||
| if (val.length == 0 || val[1].indexOf('E') == -1 || val[1].indexOf('g') == -1) { | ||
| throw new Error('redis版本不支持通知事件') | ||
| throw new Error('redis版本不支持通知事件') | ||
| } | ||
@@ -17,8 +17,8 @@ app.subscriber = redis.duplicate() | ||
| const db = redisName ? app.config.redis.clients[redisName].db : app.config.redis.client.db | ||
| const eventName = `__keyevent@${db}__:del` | ||
| app.subscriber.__eventName = eventName | ||
| // 订阅删除事件 | ||
| const eventName = `__keyevent@${db}__:del` | ||
| app.subscriber.__eventName = eventName | ||
| // 订阅删除事件 | ||
| await app.subscriber.subscribe(eventName) | ||
| } | ||
| } | ||
| }) | ||
| }; |
+4
-4
| { | ||
| "name": "egg-locker", | ||
| "version": "1.0.0", | ||
| "version": "1.0.1", | ||
| "description": "", | ||
@@ -50,10 +50,10 @@ "eggPlugin": { | ||
| "type": "git", | ||
| "url": "git+https://github.com/eggjs/egg-locker.git" | ||
| "url": "git+https://github.com/holyselina/egg-locker.git" | ||
| }, | ||
| "bugs": { | ||
| "url": "https://github.com/eggjs/egg/issues" | ||
| "url": "https://github.com/holyselina/egg/issues" | ||
| }, | ||
| "homepage": "https://github.com/eggjs/egg-locker#readme", | ||
| "homepage": "https://github.com/holyselina/egg-locker#readme", | ||
| "author": "", | ||
| "license": "MIT" | ||
| } |
+19
-1
@@ -24,3 +24,3 @@ # egg-locker | ||
| <!-- | ||
| Description here. | ||
| egg locker for concurrency base on redis | ||
| --> | ||
@@ -49,2 +49,6 @@ | ||
| exports.locker = { | ||
| //redisName: 'lock',//egg-redis的实例名称,多实例的时候需要配置 | ||
| errorMessage: '系统繁忙,请稍后再试', | ||
| maxListenerCount: 2000, | ||
| keyPrefix:'lk:' | ||
| }; | ||
@@ -57,2 +61,16 @@ ``` | ||
| ```js | ||
| // app/controller/index.js | ||
| const BaseController = require('egg').Controller | ||
| class Controller extends BaseController { | ||
| async home(){ | ||
| const orderid = 'xxxxx' | ||
| //并发控制的方法,相同的orderid只有一个调用者能获得锁并进入,其他调用者会等待锁的释放 | ||
| await this.ctx.runInLock(orderid,async ()=>{ | ||
| await doSomething() | ||
| }) | ||
| } | ||
| } | ||
| ``` | ||
| <!-- example here --> | ||
@@ -59,0 +77,0 @@ |
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
No website
QualityPackage does not have a website.
No website
QualityPackage does not have a website.
9379
7.51%82
28.13%2
100%