0.2.0 • Published 1 year ago

nstarter-cache v0.2.0

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

nstarter-cache

nstarter-cache

注意:

  • nstarter-cache 提供的缓存方法依赖装饰器环境,使用前需要确认已开启装饰器支持。

安装

使用 npm 进行安装

npm install -S nstarter-cache

使用说明

首先,由 CacheManager 统一规定缓存管理器的基础封装形式。在一般情况下,仅需要简单扩展缓存的 「存」,「取」,「删」方法,即可实现基础的缓存管理对象封装。特殊场景下,可以将诸如 redis lua 脚本等复杂存储业务访问逻辑,封装至缓存管理对象中。另外,对于缓存的 key 生成规则,缓存生命周期策略等,均可以直接在 CacheManager 对象上作为扩展属性灵活定义。

import { AbstractCacheManager } from 'nstarter-cache';

export class DemoCacheManager extends AbstractCacheManager<any, string> {
    protected async _getCache(keyArg: string) {
        return demoCacheStore[this._getCacheKey(keyArg)];
    }

    protected async _putCache(keyArg: string, content: string) {
        demoCacheStore[this._getCacheKey(keyArg)] = content;
    }

    protected async _evictCache(keyArg: string) {
        delete demoCacheStore[this._getCacheKey(keyArg)];
    }

    protected _getCacheKey(keyArg: string) {
        return keyArg;
    }
}

在实际使用过程中,提供 @cacheGet, @cachePut, @cacheEvict 三个方法装饰器,通过与 CacheManager 对象组合,分别实现对于业务方法调用过程的 “带缓存读取”,“缓存强制更新”,“缓存删除” 逻辑。同时,额外提供一个参数装饰器 @cacheKey,用于标记调用方法中的缓存 key 生成参数。cacheKey 标记的调用方法入参并不限定仅支持 string 类型,允许为任意类型,并由 CacheManager 中的 _getCacheKey 方法处理。

import { cacheGet, cacheEvict, cacheKey, cachePut } from 'nstarter-cache';

export class DemoService {
    @cacheGet(demoCacheManager)
    public async getData(@cacheKey key: string) {
        return counter ++;
    }

    @cachePut(demoCacheManager)
    public async updateData(@cacheKey key: string, value: number) {
        counter = value;
        return value;
    }

    @cacheEvict(demoCacheManager)
    public async clearData(@cacheKey key: string) {
        counter = 0;
        return 0;
    }
}

复杂业务情况情况下,允许直接在业务方法中调用 CacheManager 对象,直接操作相关缓存方法。


0.2.0

1 year ago

0.1.2

2 years ago

0.1.3

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago