groupon / node-cached

A simple caching library for node.js, inspired by the Play cache API
BSD 3-Clause "New" or "Revised" License
94 stars 15 forks source link

Create ability for "child" caches #18

Open thefotios opened 9 years ago

thefotios commented 9 years ago

I think a nice feature would be to allow you to generate a "child" memcache client, similar to how bunyan does it (example). The main benefit to this would be to more easily differentiate and maintain prefix/key namespaces, for example:

var Cached = require('cached');

var baseCache = cached('myApp');
var userCache = baseCache.child('user');
var imageCache = baseCache.child('image');

userCache.set(1234, ....);  // would set `myApp:user:1234`
baseCache.set('user:1234'); // would also set `myApp:user:1234`

This would also be useful for setting setDefaults on the children that would extend the parent values, but allow you more fine grained control for different caches.

I'd be more than happy to take a crack at this if you think it's worthwhile pursuing.

jkrems commented 9 years ago

Good idea, thanks for the suggestion! We actually do something similar internally (creating child caches by country/locale). The only reason I'm a bit hesitant to add the logic to cached as it is today, is that the code base is kind of messy and hard to maintain. So I'd love to get some simplification in before adding a new feature. I'll take a crack at a cleanup this week and will update this issue afterwards.