Memory / Redis abstraction for Directus
npm install @directus/memory@directus/memoryDirectus has various different needs for ephemeral storage that's synced between multiple processes for the same
Directus Projects. To streamline that setup, this package exports three classes that are used for everything related to
ephemeral storage:
The Kv class is a simple key-value store
``ts
import { createKv } from '@directus/memory';
const cache = createKv({
type: 'memory',
});
await cache.set('my-key', 'my-value');
`
The cache class is a Kv class extended with an LRU store
`ts
import { createCache } from '@directus/memory';
const cache = createCache({
type: 'memory',
maxKeys: 500,
});
await cache.set('my-key', 'my-value');
`
The bus class is a pub-sub abstraction. The memory type bus just handles local handlers, which adds no benefit next to
having a shared API for using pubsub.
`ts
import { Redis } from 'ioredis';
import { createBus } from '@directus/memory';
const bus = createBus({
type: 'redis',
redis: new Redis(),
namespace: 'directus',
});
`
The limiter class is a basic shared rate limiter.
`ts
import { createLimiter } from '@directus/memory';
const limiter = createLimiter({
type: 'memory',
points: 10,
duration: 5,
});
``