sequelize-transparent-cache
Simple to use and universal cache layer for Sequelize.
- Abstract: does not depends on underlying database, or cache specific
- Transparent: objects returned from cache are regular Sequelize instances with all your methods
- Explicit: all calls to cache comes through
cache()
method - Lightweight: zero additional dependencies
Installation
Install sequelize-transparent-cache itself:
npm install --save sequelize-transparent-cache
Find and install appropriate adaptor for your cache system, see "Available adaptors" section below. In this example we will use ioredis
npm install --save sequelize-transparent-cache-ioredis
Example usage
const Redis = const redis = const RedisAdaptor = const redisAdaptor = client: redis namespace: 'model' lifetime: 60 * 60 const sequelizeCache = const withCache = const Sequelize = const sequelize = 'database' 'user' 'password' dialect: 'mysql' host: 'localhost' port: 3306 // Register and wrap your models:// withCache() will add cache() methods to all models and instances in sequelize v4const User = await sequelize // Cache result of arbitrary query - requires cache keyawait User // Create user in db and in cacheawait User // Load user from cacheconst user = await User; // Update in db and cacheawait user
Look for all examples applications in examples
folder.
Methods
Object returned by cache()
call contains wrappers for limited subset of sequelize model or instance methods.
Instance:
Model:
- Automatic cache methods - does not require cache key:
cache()
create()
findByPk()
upsert()
- EXPERIMENTALinsertOrUpdate()
- EXPERIMENTAL
- Manual cache methods - require cache key:
cache(key)
In addition, both objects will contain client()
method to get cache adaptor.
Available adaptors
You can easy write your own adaptor. Each adaptor must implement 3 methods:
get(path: Array<string>): Promise<object>
set(path: Array<string>, value: object): Promise<void>
del(path: Array<string>): Promise<void>
Checkout existed adaptors for reference implementation.