前言
key helper
主要負(fù)責(zé)以下內(nèi)容
- 定義redis訪問時(shí)所需要的所有
key
的pattern
- 提供從
key pattern
中獲取實(shí)際key
的函數(shù)
如從'0x90:user:#userID#:score:#corseID#'
到'0x90:user:0001:score:01'
- 提供了從指定
key pattern
中獲取指定字段的值
定義key pattern
module.exports = {
master: 'master',
user: {
count: '0x01:user:total',
name: '0x01:user:#userID#',
score: *'0x90:user:#userID#:score:#corseID#'
getUserId: function(name) {
return name.split(':')[2];
},
getCorseId: function(score) {
return score.split(':')[4];
},
}
// 省略
}
定義key pattern的轉(zhuǎn)換函數(shù)
module.exports = {
// 省略
getKey: function(key, json) {
var params = key.match(/#.*?#/g);
params.forEach(function(param, index) {
var jsonKey = param.replace(/#/g, '');
if (json[jsonKey] === undefined) {
throw new Error('Invalid redis key...KEY:' + key + ' PARAMS:' +
json);
}
key = key.replace(param, json[jsonKey]);
});
return key;
}
}
調(diào)用方法
var keyHelper = require('./keyHelper');
var key = keyHelper.getKey(keyHelper.user.score, {
userID: 0001,
corseID: 01
})
// redis訪問處理略
完整代碼如下
// keyHelper.js
module.exports = {
master: 'master',
user: {
count: '0x01:user:total',
name: '0x01:user:#userID#',
score: *'0x90:user:#userID#:score:#corseID#'
getUserId: function(name) {
return name.split(':')[2];
},
getCorseId: function(score) {
return score.split(':')[4];
},
}
getKey: function(key, json) {
var params = key.match(/#.*?#/g);
params.forEach(function(param, index) {
var jsonKey = param.replace(/#/g, '');
if (json[jsonKey] === undefined) {
throw new Error('Invalid redis key...KEY:' + key + ' PARAMS:' +
json);
}
key = key.replace(param, json[jsonKey]);
});
return key;
}
}