缓存分类
模块a-cache
提供了三种缓存:
内存缓存
:仅对当前进程有效Redis缓存
:可跨进程跨机器使用数据库缓存
:可跨进程跨机器使用
内存缓存
模块a-cache
提供了全局Bean组件cache.mem
src/suite-vendor/test-party/modules/test-party/backend/src/controller/test/cache/mem.js
- set
// set(name, value, timeout)
this.ctx.cache.mem.set('name', 'zhennann', 1000);
名称 | 缺省值 | 说明 |
---|---|---|
name | 缓存名称,属于当前模块 | |
value | 缓存值 | |
timeout | 0 | 缓存超时 |
- has
let res = this.ctx.cache.mem.has('name');
- get
let value = this.ctx.cache.mem.get('name');
- getset
let value = this.ctx.cache.mem.getset(name, 'zhen.nann');
- remove
this.ctx.cache.mem.remove('name');
- 跨模块访问
可访问其他模块定义的缓存
// other module's cache
const moduleCache = this.ctx.cache.mem.module('test-party');
// get
let value = moduleCache.get('name');
Redis缓存
模块a-cache
提供了全局Bean组件cache.redis
src/suite-vendor/test-party/modules/test-party/backend/src/controller/test/cache/redis.js
- set
// set(name, value, timeout)
await this.ctx.cache.redis.set('name', 'zhennann', 1000);
名称 | 缺省值 | 说明 |
---|---|---|
name | 缓存名称,属于当前模块 | |
value | 缓存值 | |
timeout | 0 | 缓存超时 |
- has
let res = await this.ctx.cache.redis.has('name');
- get
let value = await this.ctx.cache.redis.get('name');
- getset
let value = await this.ctx.cache.redis.getset(name, 'zhen.nann');
- remove
await this.ctx.cache.redis.remove('name');
- 跨模块访问
可访问其他模块定义的缓存
// other module's cache
const moduleCache = this.ctx.cache.redis.module('test-party');
let value = await moduleCache.get('name');
数据库缓存
模块a-cache
提供了全局Bean组件cache._db
和cache.db
由于Redis缓存
是后来增加的功能,之前的代码都是使用cache.db
。而事实上,当Redis缓存
实现后,绝大多数场景都会优先使用Redis缓存
,为了保持系统的向下兼容性,cache.db
===cache.redis
,cache._db
才是真正用数据库作为缓存
可以通过以下参数来修改这种默认行为:
a-cache/backend/src/config/config.js
// db
config.db = {
redis: true,
};
src/suite-vendor/test-party/modules/test-party/backend/src/controller/test/cache/db.js
- set
// set(name, value, timeout)
await this.ctx.cache._db.set('name', 'zhennann', 1000);
名称 | 缺省值 | 说明 |
---|---|---|
name | 缓存名称,属于当前模块 | |
value | 缓存值 | |
timeout | 0 | 缓存超时 |
- has
let res = await this.ctx.cache._db.has('name');
- get
let value = await this.ctx.cache._db.get('name');
- getset
let value = await this.ctx.cache._db.getset(name, 'zhen.nann');
- remove
await this.ctx.cache._db.remove('name');
- 跨模块访问
可访问其他模块定义的缓存
// other module's cache
const moduleCache = this.ctx.cache._db.module('test-party');
let value = await moduleCache.get('name');
评论: