Package Exports
- @javien/mikro-orm-redis-cache-adapter
- @javien/mikro-orm-redis-cache-adapter/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@javien/mikro-orm-redis-cache-adapter) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Mikro ORM Redis Cache Adapter
This is mikro orm redis cache adapter that uses v8.serialize
and
vs.deserialize
rather than JSON.stringify
and JSON.parse
.
Quick start
After install the package, add resultCache
config.
import
RedisCacheAdapter,
{ type RedisCacheAdapterOptions}
from '@javien/mikro-orm-redis-cache-adapter'
defineConfig({
// your configuration
resultCache: {
adapter: RedisCacheAdapter
options: {
// pass your redis client
client: redis
// (optional) Debug mode. Defaults to `false`.
debug: true,
// (optional) The prefix for the cache keys. Defaults to `mikro`.
prefix: 'mikro',
// (optional) The delimiter between the prefix and the cache key. Defaults to `:`.
prefixDelimiter: ':',
// (optional) Logger. Defaults to `console.log`.
logger: console.log,
gracefulShutdown: false
// (optional) gracefulShutdown: If you want to close the Redis connection by yourself, set it to `false`. Defaults to `true`.
} as RedisCacheAdapterOptions
}
})
Why not JSON.stringify?
JSON.stringify
is usually used to serialize object,
but there're several kind of data that it can't serialize and deserialize - BigInt, recursive, Buffer, Map, Set and etc.
JSON.stringify(BigInt(1))
// Uncaught TypeError: Do not know how to serialize a BigInt
const obj = {}
obj.obj = obj
JSON.stringify(obj)
// Uncaught TypeError: Converting circular structure to JSON
// --> starting at object with constructor 'Object'
// --- property 'obj' closes the circle
const buf = Buffer.from([0])
const str = JSON.stringify(buf)
// '{"type":"Buffer","data":[0]}'
const parsed = JSON.parse(str)
// { type: 'Buffer', data: [ 0 ] }
// parsed value is different with original data.
To solve this, we can pass replacer
parameter. However I thought this is not a best way to serialize data.