Caches - Spool for Fabrix to cache through many different store options


471.6.13 years ago3 years agoMinified + gzip package size for @fabrix/spool-caches in KB



Gitter NPM version Build Status Test Coverage Dependency Status Follow @FabrixApp on Twitter

:package: Caches Spool


$ npm install --save @fabrix/spool-caches


// config/main.ts
export const main = {
  spools: [
    // ... other spools


const mongoStore = require('cache-manager-mongodb')
const redisStore = require('cache-manager-redis')
// config/caches.ts
export const caches = {
  stores: [
  // Example for redis Store
    name: 'my-redis-store',
    store: redisStore,
    host: 'localhost',
    auth_pass: ''
    db: 0,
    ttl: 600 // Default TTL
  // Example for memory store
    name: 'memory-store',
    store: 'memory',
    max: 100,
    ttl: 60
  // Example for mongo store
    name: 'mongo-store',
    store: mongoStore,
    options: {
      host: 'localhost',
      port: '27017',
      username: 'username',
      password: 'password',
      database: 'mymondodb',
      collection: 'cacheManager',
      compression: false,
      poolSize: 5,
      auto_reconnect: true
      ttl: 60

  defaults: ['memory-store']

For more information about store (type and configuration) please see the cache-manager documentation.


  const myDefaultCache = this.app.services.CacheService.getStore() // Return the first store into defaults config
  myDefaultCache.set('mystoreddata', 'testValue', {ttl: 10}).then(result => {
  return myDefaultCache.get('mystoreddata').then(result => {
        // >> 'testValue'
        return myDefaultCache.del('mystoreddata')

You can retrieve a specific store by name like this: const myMongoCache = this.app.services.CacheService.getStore('mongo-store')

You can retrieve a multi caching store like this (without parameters to get multi caching with defaults stores): const myMongoCache = this.app.services.CacheService.getMultiCachingStore(['memory-store', 'mongo-store'])

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.