combine concurrent gets for the same keys into one get/multiget to the server
// first you need memcached. (or something that implements the methods get and getMulti)varMemcached=require('memcached');varmulti=require('memcache-multiplex');vargetter=multi(newMemcached('127.0.0.1:11211'));// all of these callsgetter.get('hi',function(err,v){console.log('the value of hi',v)})getter.get('hi',function(err,v){console.log('the value of hi',v)})getter.get('hi',function(err,v){console.log('the value of hi',v)})// make only one call to the memcache server// get a,bgetter.getMulti(['a','b'],function(){});// get c but not b because im alredy fetching bgetter.getMulti(['b','c'],function(){});// no call is made im already requesting the keys im searching for.getter.getMulti(['a','c'],function(){});// triggers 2 "getMulti" on the client driver.// one for keys ['a','b'] and one for just key ['c']- this module exports a function
- if you call this function with a memcached client you will get an object with getter methods
gets the key
get multiple keys
stats is an object
it has stats that help you determine how well you are multiplexing
get
- keys , how many single keys were requested from the memcached server
- calls, how many keys were requested by calls to the function
multi
- keys, how many keys were requested from the memcached server
- requested, how many keys were requested by calls to getMulti
- calls, how many calls to getMulti
- made, how many calls to get multi resulted in fetching keys from the memcached server
{get:{keys:0,calls:0},multi:{keys:0,requested:0,calls:0,made:0}}rant! if you use node you should not make multiple concurrent gets for the same external resources. this applies to databases web services whatever.
