Giter VIP home page Giter VIP logo

nconf-redis's Introduction

nconf-redis

A Redis store for nconf

Installation

Installing npm (node package manager)

  $ curl http://npmjs.org/install.sh | sh

Installing nconf-redis

  $ [sudo] npm install nconf
  $ [sudo] npm install nconf-redis

Motivation

tldr;?: To break the nconf codebase into small modules that work together.

Usage

The store provided by nconf-redis will persist all of your configuration settings to a Redis server. All calls to .get(), .set(), .clear(), .reset() are asynchronous taking an additional callback parameter.

The Redis engine also has an in-memory cache with a default TTL of one hour. To change this, just pass the ttl option to .use().

  var nconf = require('nconf');
  
  //
  // Requiring `nconf-redis` will extend the `nconf`
  // module.
  //
  require('nconf-redis');
  
  nconf.use('redis', { host: 'localhost', port: 6379, ttl: 60 * 60 * 1000, db: 0 });

nconf-redis's People

Contributors

indexzero avatar pksunkara avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

nconf-redis's Issues

Cannot run tests

Hi there,

I've been tracking down an issue with nconf and I noticed that I wasn't able to run any tests in this repo at all. I'm getting a bit of a strange error that seems to error out before any test has started:

> [email protected] test /Users/mansona/git/blooie/public/nconf-redis
> vows test/*-test.js --spec


  ♢ nconf/stores/redis

util.puts: Use console.log instead
✗ Errored » 1 errored

npm ERR! Test failed.  See above for more details.

Here are my current versions of node and npm:

➜  nconf-redis git:(master) node -v
v1.2.0
➜  nconf-redis git:(master) npm -v
2.5.1

Has anyone had any issues running these tests recently?

null value throws TypeError

If you have an JSON key that contains some null values it will throw an exception when you try to save the key.

TL;DR demo of the issue: https://gist.github.com/itayw/7566317

JSON example:

var badJSON = {
  port: 40008,
  securePort: null
}

Fails on:

-->nconf.set('badJSON', badJSON, function(err) {
  if (err)
    throw err;
  nconf.get('badJSON', function(err, value) { 
    if (err)
      throw err;

    if (value)
      console.log('bad JSON value set and get fine.');
    else
      console.log('Failed to set and get bad JSON value')
  });
});

Exception and stack:

TypeError: Object.keys called on non-object
    at Function.keys (native)
    at Redis._setObject (/.../dev/joola.io.manage/node_modules/nconf-redis/lib/nconf-redis.js:425:23)
...

using the pubsub capability of redis to be updated with config changes

Hi

Before creating our own implementation, I was researching the scene for a Redis based configuration solution with in-memory fallback, and got here - which is awsome!
(My last visit to nconf was years ago, back then we chose another solution)

Now, assume that we use redis as the central configuration server, and would like to keep all clients in sync for config changes pushed to the sever - the natural choice would be to use the pubsub capabilities of redis, to keep all subscribed clients in sync with changes - thus, allowing the end users to use synchronous API - just like with memory storage.

I'm very hoping I'm not the first one to think about it...

Thoughts? References? Advices?

If it means submitting a new nconf-storage - it's considerable too, if I get some guidance to be sure I'm coding in accord to your paradigm.
I've used rediss pubsub channels with node for a chat, and it works like a charm. Sure a configuration center will be easier than that...

Thanks
Osher

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.