Skip to content

Commit 74600b9

Browse files
forlJacksonTian
authored andcommitted
feat: service/cache/incr (#73)
* feat: add cache.incr * test: improve controller topic unit test cov (#59) * test: f * test: f * chore: fix lint * test: f * test: f
1 parent f94e1a1 commit 74600b9

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

app/service/cache.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ class CacheService extends Service {
2222
const duration = (Date.now() - t);
2323
logger.debug('Cache', 'set', key, (duration + 'ms').green);
2424
}
25+
26+
async incr(key, seconds) {
27+
const { redis, logger } = this.app;
28+
const t = Date.now();
29+
const result = await redis.multi().incr(key).expire(key, seconds)
30+
.exec();
31+
const duration = (Date.now() - t);
32+
logger.debug('Cache', 'set', key, (duration + 'ms').green);
33+
return result[0][1];
34+
}
2535
}
2636

2737
module.exports = CacheService;

test/app/service/cache.test.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,23 @@ describe('test/app/service/cache.test.js', () => {
1616
const result2 = await ctx.service.cache.get('greet123');
1717
assert(result2 === undefined);
1818
});
19+
20+
it('incr should ok', async () => {
21+
const ctx = app.mockContext();
22+
const key1 = '' + Date.now();
23+
24+
let initNumber = await ctx.service.cache.incr(key1, 4);
25+
assert(initNumber === 1);
26+
await new Promise(resolve => setTimeout(resolve, 2000));
27+
let secondNumber = await ctx.service.cache.incr(key1, 1);
28+
assert(secondNumber === 2);
29+
30+
// test expire works
31+
const key2 = '' + Date.now();
32+
initNumber = await ctx.service.cache.incr(key2, 2);
33+
assert(initNumber === 1);
34+
await new Promise(resolve => setTimeout(resolve, 3000));
35+
secondNumber = await ctx.service.cache.incr(key2, 1);
36+
assert(secondNumber === 1);
37+
});
1938
});

0 commit comments

Comments
 (0)