@bondsports/cache
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i @bondsports/cache

Weekly Downloads

350

Version

1.1.0

License

ISC

Unpacked Size

48.3 kB

Total Files

42

Last publish

Collaborators

  • dan.spinosa--bondsports.co
  • evadshin
  • eyal.borovsky
  • gittyp
  • ido.naveh.bondsports
  • noam.benzeev
  • taroninak
  • barak_matityahu
  • jbknickerbocker