@bondsports/cache
v1.1.7
Published
Cache module for Bond-Sports
Downloads
1,458
Maintainers
Keywords
Readme
Cache
Cache is a module to encapsulate generic caching functionality under simple interface
It provides two interfaces BaseCache and SimpleCache
Both were designed to be used to cache plain javascript objects containing id:number
field for identification
BaseCache is a low level one to have more control over the process.
SimpleCache is better suited if you want to have separate cache holders for different kind of objects
Usage
BaseCache
import { BaseCache, MemoryStore } from '@bondsports/cache';
const cache = new BaseCache(new MemoryStore(), console.log, true);
const program = cache.getOrFetchOne('programs', 12, async missingId => ({ id: 12, name: 'program 12' }));
const programs = cache.getOrFetch('programs', [12, 13], async missingIds => [
{ id: 12, name: 'program 12' },
{ id: 13, name: 'program 13' },
]);
cache.invalidateOne('programs', 12);
cache.invalidate('programs', [13]);
SimpleCache
import { BaseCache, MemoryStore } from '@bondsports/cache';
const cache = new SimpleCache(new MemoryStore(), 'programs', async missingIds => [
{ id: 12, name: 'program 12' },
{ id: 13, name: 'program 13' },
]);
const program = cache.getOrFetchOne(12);
const programs = cache.getOrFetch([12, 13]);
cache.invalidateOne(12);
cache.invalidateAll();
SimpleCache with Redis as a store
import { RedisClientType, createClient } from '@redis/client';
import { RedisStore } from '@bondsports/cache';
const client = createClient({ url: 'redis://localhost:6379' });
const store = new RedisStore(client, 1000);
const cache = new SimpleCache(store, 'programs', async missingIds => [
{ id: 12, name: 'program 12' },
{ id: 13, name: 'program 13' },
]);
const program = cache.getOrFetchOne(12);
const programs = cache.getOrFetch([12, 13]);
cache.invalidateAll();
SimpleCache with Redis as a store
import { RedisClientType, createClient } from '@redis/client';
import { RedisStore } from '@bondsports/cache';
const client = createClient({ url: 'redis://localhost:6379' });
const store = new RedisStore(client, 1000);
const cache = new SimpleCache(store, 'programs', async missingIds => [
{ id: 12, name: 'program 12' },
{ id: 13, name: 'program 13' },
]);
const program = cache.getOrFetchOne(12);
const programs = cache.getOrFetch([12, 13]);