redis-obj is Library mapping redis with javascript object.
npm install redis-obj
let RedisObj = require('redis-obj');
let redis = require('redis');
let redisClient = redis.createClient();
// example class
// your class inherits RedisObj
class example extends RedisObj {
constructor() { // until now, you can not use constructor parameters.
super(); // you must call super() before using 'this' keyword.
this.title = "redis-obj";
this.name = "JungGukAn";
this.money = 1;
this.friends = ['friends1'],
this.detail = {
phone: '0101231234',
skill: ['nodejs', 'c#', 'c++']
}
}
showMeTheMoney() {
if(this.name == "JungGukAn"){
this.money = 10000000;
}else{
this.money = 0;
}
}
changeName(name){
this.name= name;
}
}
let e = new example(); // create new instance.
e.save(1, redisClient).then((e) => {
console.log(e.title);
console.log(e.name);
console.log(e.detail.skill);
}) //save current class properties in redis as id 1
// 'get' method makes you get object saved in redis.
// Caution! this method only guarantee locking until get object.
// if you want to guarantee locking from getting object to saving object, use open() and close().
example.get(1, redisClient).then((ex) => {
console.log(ex.title);
console.log(ex.name);
console.log(ex.money);
ex.showMeTheMoney();
// 'save' method save current properties regardless of whether object has changed in redis.
ex.save().then((e) => {
console.log(e.money);
})
})
// 'open' method is similar with 'get' method.
// but if you want to guarantee locking from getting object to saving object, use open() and close().
// Caution! you have to use open() with close().
// In fact, this uses optimistic lock.
// So, when something in redis is changed in middle of process, repeat getting object, execution methods you used, and saving.
example.open(1, redisClient).then((ex) => {
// ex.title = 'dont access property directly'
ex.changeName("AlbertAn");
ex.showMeTheMoney();
ex.close(); //this also has promise pattern.
})