redis-speed

1.2.0 • Public • Published

redis-speed

An utility for redis aim to improve the performance of redis, it includes FlashCacheRedis now.

build status Test coverage David deps node version

NPM

FlashCacheRedis

Save value in memory to reduce the frequency of reading redis.

Usage

const {FlashCacheRedis} = require('redis-speed');
const Redis = require('ioredis');
const redisClient = new Redis();//connect to the redis server of localhost:6379
const {cacheQueryAdapter} = new FlashCacheRedis({
    redisClient,//the redis client object
    interval:1000
});
const {expect} = require('chai');
const KEY = 'flash_cache_redis:basic';
const VALUE = {name:'sunny',id:1};
 
redisClient.set(KEY,JSON.stringify(VALUE),function(err) {//save session
    if (err) {
        return console.error(err);
    }
    //It will cache the value in FlashCacheRedis instance, when you call the function of `cacheQueryAdapter.get` next, it will read the value directly from memory.
    cacheQueryAdapter.get(KEY,function(err,obj) {
        if (err) {
            return console.error(err);
        }
        try {
            obj = JSON.parse(obj);
        } catch (e) {
            return console.error(e);
        }
        expect(obj).to.have.property('name').and.equal(VALUE.name);
    });
});

RedisHelper

An utility class to do parallel job with redis. If your redis is run in cluster mode, it will not return the data properly with some functions, such as pipeline or mutil. RedisHelper is designed to resoved such issue.

Usage

const {RedisHelper} = require('redis-speed');
const key1 = 'key1';
const value1 = Math.random() + '';
const key2 = 'key2';
const value2 = Math.random() + '';
const tasks = [
    ['set',key1,value1],
    ['set',key2,value2]
];
redisHelper.doParallelJobs(tasks,function(none,[[err1],[err2]]) {
 
});

redisBatchIncr

An utility class to send redis command in batch.

Usage

const {
    redisBatchIncr: {
        EVENT_ONE_LOOP_FINISHED,
        EVENT_SEND_ERROR,
        BatchHincr,
        BatchZincrby 
    }
= require('redis-speed');
const redisClient = new Redis();//connect to the redis server of localhost:6379
 
const LOOP_COUNT = 100;
const INTERVAL = 200;
const key = ('test:' + Math.random()).replace('.','');
const cmd = new BatchHincr({redisClient,loopInterval:INTERVAL,key});
 
cmd.on(EVENT_ONE_LOOP_FINISHED,function() {
    redisClient.hget(key,'name',function(err,reply) {
        if (err) {
            return console.error(err);
        }
        expect(Number(reply)).to.be.equal(LOOP_COUNT);
    });
});
cmd.on(EVENT_SEND_ERROR,function(err) {
    console.error(err);
});
 
for(var i=0;i<LOOP_COUNT;i++) {
    cmd.addData(1,'name');
}

redisMultiBatchIncr

An utility class to send redis command in batch with multiple keys.

Usage

const {
    redisMultiBatchIncr: {
        EVENT_ONE_LOOP_FINISHED,
        EVENT_SEND_ERROR,
        BatchMultiHincr,
        BatchMultiZincrby 
    }
= require('redis-speed');
const redisClient = new Redis();//connect to the redis server of localhost:6379
 
const LOOP_COUNT = 100;
const INTERVAL = 200;
 
const cmd = new BatchMultiHincr({redisClient,loopInterval:INTERVAL});
const key = ('test:' + Math.random()).replace('.','');
cmd.on(EVENT_ONE_LOOP_FINISHED,function() {
    redisClient.hget(key,'name',function(err,reply) {
        if (err) {
            return done(err);
        }
        expect(Number(reply)).to.be.equal(LOOP_COUNT);
        done();
    });
});
cmd.on(EVENT_SEND_ERROR,function(err) {
    done(err);
});
 
for(var i=0;i<LOOP_COUNT;i++) {
    cmd.addData(key,1,'name');
}

API

api

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i redis-speed

Weekly Downloads

4

Version

1.2.0

License

MIT

Unpacked Size

65.4 kB

Total Files

17

Last publish

Collaborators

  • whyun-master