ramiel / mikro-orm-cache-adapter-redis

A redis cache adapter for mikro-orm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mikro-orm - Redis cache adapter

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,
    },
  },
});

Serializing

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.

About

A redis cache adapter for mikro-orm

License:MIT License


Languages

Language:TypeScript 76.5%Language:JavaScript 23.5%