polyclay-redis

redis persistence adapter for polyclay, the schema-enforcing document mapper

npm install polyclay-redis
7 downloads in the last day
28 downloads in the last week
48 downloads in the last month

polyclay-redis

A redis persistence adapter for Polyclay.

Build Status Dependencies NPM version

How-to

For the redis adapter, specify host & port of your redis server. The dbname option is used to namespace keys; it defaults to the plural value of the model class. The redis adapter will store models in hash keys of the form dbname:key. It will also use a set at key dbname:ids to track model ids.

var polyclay = require('polyclay'),
    RedisAdapter = require('polyclay-redis');

var RedisModelFunc = polyclay.Model.buildClass({
    properties:
    {
        name: 'string',
        description: 'string'
    },
    singular: 'widget',
    plural: 'widgets'
});
polyclay.persist(Widget);


polyclay.persist(RedisModelFunc, 'name');

var options =
{
    host: 'localhost',
    port: 6379
};
RedisModelFunc.setStorage(options, RedisAdapter);

The redis client is available at obj.adapter.redis. The db name falls back to the model plural if you don't include it. The dbname is used to namespace model keys.

Ephemeral data

If you would like your models to persist only for a limited time in redis, set the ephemeral field in the options object to true.

var options =
{
    host: 'localhost',
    port: 6379,
    ephemeral: true
};
RedisModelFunc.setStorage(options, RedisAdapter);

The adapter will not track model ids for ephemeral objects, so RedisModelFunc.all() will always respond with an empty list. However, the save() function attempts to set a time to live for an object.

If the model has a ttl field, the adapter uses that to set the redis TTL on an object when it is updated or saved.

Similarly, if an object has an expire_at, the adapter sets the redis key to EXPIRE_AT the given timestamp.

If you do not set the ephemeral option, ttl and expire_at properties will be not be treated specially.

npm loves you