1.1.0 • Published 1 month ago

@bondsports/cache v1.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 month ago

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]);
1.1.0

1 month ago

1.0.8

3 months ago

1.0.7

3 months ago

1.0.4-ido

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago