1.1.3 • Published 8 years ago

node-async-lock v1.1.3

Weekly downloads
5
License
ISC
Repository
github
Last release
8 years ago

Node Async lock (异步锁)

a simple node async lock that support ttl base memory database such as redis.

install

npm install node-async-lock

usage

node_redis demo :

var redis = require("redis"),
  client = redis.createClient(6379,'localhost');

var ASYNCLOCK = require('node-async-lock');
var AsyncLock = new ASYNCLOCK({
  set:function(key,data,ttl,callback){
    client.set(key,data,function(err,reply){
      callback(err,reply.toString());
    });
    client.expire(key,ttl);
  },
  get:function(key,callback){
    client.get(key,function(err,reply){
      callback(err,reply.toString());
    });
  },
  remove:function(key,callback){
    client.del(key,function(err){
      callback(err);
    })    
  },
  ttl:60, //the unit is second,defualt one day.
  namespace:'test-asynclock-ttl-' //default:async-lock-ttl-
});

eg1:

function testLock(cb){
	AsyncLock.lock('buy',2,function(err,data){
		cb(err,data);
	})
}

eg2:

function testLock(cb){
	AsyncLock.lock('pay',2,function(err,data){
		if(!err){
			//todo your code.
			AsyncLock.unlock('pay',function(err,data){
				cb(err,data);
			})						
		}else{
			cb(err,data);
		}
	})
}

API

lock

AsyncLock.lock('test-redis',10,function(err,data){
  console.log(err,data);
})

unlock

AsyncLock.unlock('test-redis',function(err,data){
  console.log(err,data);
})

remove

AsyncLock.remove('test-redis',function(err,data){
  console.log(err);
})

getNameSpace

console.log(AsyncLock.getNameSpace());//test-asynclock-ttl
1.1.3

8 years ago

1.1.2

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago