obcon-scada / app /include /Cache.js
chanmin0723's picture
Initial obcon SCADA deploy
e4bf523
Raw
History Blame Contribute Delete
1.85 kB
'use strict'
/**
* Copyright (c) 2017~2019, OBCon Inc.
* All rights reserved.
*/
/**
* @file
* @copyright 2017~2019, OBCon Inc.
* @author gye hyun james kim [pnuskgh@gmail.com]
*/
let moment = require('moment');
//--- 일반적으로 LRU가 LFU보다 우수함
//--- LRU (Least Recently Used, 가장 최근 사용) : 가장 오래된 것 삭제
//--- LFU (Least Frequently Used, 최소 빈도 사용) : 참조 횟수가 가장 작은 것 삭제
class Cache {
constructor(capacity, isLFU=true) {
this.isLFU = isLFU;
this.capacity = capacity;
this.size = 0;
this.cacheDataset = {}; //--- Cache 데이터 저장
// this.cacheFreq = {}; //--- Cache 사용 빈도 저장 for LFU -> To-Do: Linked List
this.cacheDatetime = {}; //--- Cache의 최근 접근일시 저장 for LRU -> To-Do: Linked List
this.size = 0;
}
getCache(key) {
if (this.existCache(key)) {
// this.cacheFreq[key] = this.cacheFreq[key] + 1;
this.cacheDatetime[key] = moment();
return this.cacheDataset[key];
}
return null;
}
setCache(key, value) {
this.cacheDataset[key] = value;
// this.cacheFreq[key] = (this.existCache(key)) ? this.cacheFreq[key] + 1:1;
this.cacheDatetime[key] = moment();
}
existCache(key) {
return this.cacheDataset.hasOwnProperty(key);
}
delCache(key) {
if (this.existCache(key)) {
delete this.cacheDataset[key];
// delete this.cacheFreq[key];
delete this.cacheDatetime[key];
this.size = this.size - 1;
}
}
}
module.exports = Cache;