This is an adapter for redis to be used with mikro-orm.
Install it with its peer dependencies
npm i mikro-orm-cache-adapter-redis ioredis
and pass it as option to mikro-orm
import { MikroORM } from '@mikro-orm/core/MikroORM';
import { RedisCacheAdapter } from 'mikro-orm-cache-adapter-redis';
const orm = await MikroORM.init({
// Your options
resultCache: {
adapter: RedisCacheAdapter,
options: {
// Base options
// An optional key prefix. By default is `mikro`
keyPrefix: 'mikro'
// Optional: print debug informations
debug: false,
// Here goes IORedis connection options (the library will instantiate the client)
host: '...',
port: 6379,
password: 'yourpassword'
}
}
});
Instead of passing options, you can pass directly an IORedis instance
import { RedisCacheAdapter } from "mikro-orm-cache-adapter-redis";
import Redis from "ioredis";
const myRedisClient = new Redis();
const orm = await MikroORM.init({
// Your options
resultCache: {
adapter: RedisCacheAdapter,
options: {
client: myRedisClient,
},
},
});
This package uses serialize
and deserialize
functions from the Node.js v8 API instead of JSON.stringify
and JSON.parse
.
They are inadequate for certain primitive data types like Buffer and Typed Array, as they cannot accurately reproduce same data after serialization. You can checkout its limitation here.
But, there're still some primitives that serialize
cannot handle.
- function
- symbol
- any uncopyable data
If you need to serialize these types of data, you should using a custom serializer or custom type
If you're in debug mode, you will see JSON stringified data at your console. This is solely for debugging purposes. serialize
is used for actual cache.
You need docker compose to run the tests.
# Start test services
npm run test:services:start
# Run tests
npm test