nodejs訪問redis時的key helper封裝

前言

key helper主要負責以下內容

  • 定義redis訪問時所需要的所有keypattern
  • 提供從key pattern中獲取實際key的函數
    如從'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的轉換函數

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;
  }
}

調用方法

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;
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容