sequelize-transparent-cache-nats
v3.0.0
Published
NATS adaptor for sequelize-transparent-cache
Readme
sequelize-transparent-cache-nats
NATS adaptor for sequelize-transparent-cache.
Stores sequelize objects in NATS using a KeyValue Bucket
Example usage
NOTE: NATS uses milliseconds for durations when configuring a bucket (ttl and markerTTL). But setting the ttl per-key is done as a string duration (e.g. 5s).
Example with Bucket TTL
By setting the TTL (max_age) at the bucket level all keys will be expired based on this value.
const { connect } = require('@nats-io/transport-node')
const { jetstream } = require('@nats-io/jetstream')
const { Kvm } = require('@nats-io/kv')
// connect to the default server 127.0.0.1:4222
async function start() {
const nc = await connect()
const js = jetstream(nc)
const kvBucket = await new Kvm(js).create('bucket', { ttl: 1_000 }) // ttl is specified in ms
const NatsAdaptor = require('sequelize-transparent-cache-nats')
const natsAdaptor = new NatsAdaptor({
client: kvBucket,
namespace: 'example',
})
}
start()
Example with Bucket Marker TTL and per-key TTL
If per-Key TTLs are required then the bucket needs to be created with the markerTTL option.
const js = jetstream(nc)
const kvBucket = await new Kvm(js).create('bucket', { markerTTL: 1_000 }) // ttl are specified in ms
// set cache key, and set ttl
await User.cache('find-with-ttl', { ttl: '30s' }).findAll({ where: { name: 'Dan' } })
Constructor arguments
| Param | Type | Required | Description |
|-------------|------------------|----------|---------------------------------------------------------------------------------|
| client | Bucket instance | yes | Configured KV Bucket |
| namespace | string | no | Prefix for all keys |
Storing format
Each object stored as single JSON string. Namespace delimeter is ".".
| Key | Value |
|--------------------------------------|-----------------|
| <namespace>.<modelName>.<objectId> | {JSON string} |
For more info see sequelize-transparent-cache
