polyclay-redis

0.2.0 • Public • Published

polyclay-redis

A redis persistence adapter for Polyclay.

on npm Tests Coverage Status Dependencies

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.

Readme

Keywords

Package Sidebar

Install

npm i polyclay-redis

Weekly Downloads

0

Version

0.2.0

License

MIT

Last publish

Collaborators

  • ceejbot