Skip to content

Cache Backend ​

This module uses unstorage to handle the cache layer. This means it's possible to use any cache backend. By default the memory backend is used.

If a Nuxt app runs several instances you cannot use a memory cache anymore, since purging a cache via the API would only affect a single instance. To solve that you have to use an external cache backend.

Example using Redis ​

This minimal example uses the Redis driver provided by unstorage.

typescript
import { defineMultiCacheOptions } from 'nuxt-multi-cache/server-options'
import redisDriver from 'unstorage/drivers/redis'

export default defineMultiCacheOptions(() => {
  return {
    component: {
      storage: {
        driver: redisDriver({
          base: 'component:',
        }),
      },
    },
  }
})

Custom Driver ​

Checkout the full example on how to create a custom driver.

This example recreates the default storage (in-memory) using a simple cache object.

typescript
import { defineMultiCacheOptions } from 'nuxt-multi-cache/server-options'
import { defineDriver } from 'unstorage'

const customDriver = defineDriver((_opts) => {
  let cache = {}
  return {
    hasItem(key: string) {
      return !!cache[key]
    },
    getItem(key: string) {
      return cache[key]
    },
    setItem(key, value) {
      return (cache[key] = value)
    },
    removeItem(key) {
      cache[key] = undefined
    },
    getKeys() {
      return Object.keys(cache)
    },
    clear() {
      cache = {}
    },
    dispose() {},
  }
})

export default defineMultiCacheOptions(() => {
  return {
    component: {
      storage: {
        driver: customDriver(),
      },
    },
  }
})

Released under the MIT License.