为了减轻数据库压力,但不用redis 或 memcache 不知道可行否 Data = new Object(); build();
function build(){
Data = new Object();
Data.repertory = new Array();
Data.del = function (key, value){
if (typeof Data.repertory[key] == "undefined") {
return true;
}
delete Data.repertory[key];
return true;
}
Data.set = function (key, value){
Data.repertory[key] = value;
return true;
}
Data.get = function (key){
if (typeof Data.repertory[key] == "undefined") {
return false;
}
return Data.repertory[key];
}
Data.check = function (key, value){
if (typeof Data.repertory[key] == "undefined"){
return false;
}
if (Data.repertory[key] == value){
return true;
} else {
return false;
}
}
Data.inc = function (key, value){
if (typeof Data.repertory[key] == "undefined"){
return true;
}
Data.repertory[key] += value;
return true;
}
Data.dec = function (key, value){
if (typeof Data.repertory[key] == "undefined"){
return true;
}
Data.repertory[key] -= value;
return true;
}
Data.push = function (key, value){
if (typeof Data.repertory[key] == "undefined"){
Data.repertory[key] = new Array();
}
Data.repertory[key].push(value);
return true;
}
Data.fun = function(fun){
fun(Data.repertory);
}
Data.remove = function (key, value, flag){
if (typeof Data.repertory[key] == "undefined"){
return true;
}
var i;
if (flag){
for (i = 0; i<Data.repertory[key].length; i++){
if (Data.repertory[key][i][flag] == value){
Data.repertory[key].splice(i, 1);
break;
}
}
} else {
for (i = 0; i<Data.repertory[key].length; i++){
if (Data.repertory[key][i] == value){
Data.repertory[key].splice(i, 1);
break;
}
}
}
return true;
}
}
缓存就是把临时数据存在内存,node当然可以做,如果只是静态数据(即不会更改的配置信息)可以这么干,但是你要把node当缓存服务器来用,不建议这么做,像memcache、redis这样可以做缓存的,在功能上具有很大的弹性,性能又做了很多优化,何必重复造轮子了。
@peiweippww - -! 主要是没有memcache 和 redis 啊… 为什么不建议node当缓存服务器来用哈
@Hi-Rube node 用的是v8有内存限制,如果你要用,建议用buffer吧
@chloe new 一个 buffer 使用堆外内存就没有限制了吧~~
看不懂,似乎很高级的样子。
感觉如果不控制内存限制, 很容易造成内存泄漏, 还是不用了~
缓存请使用单核心。
额,多个进程就有问题了
N个用户一进来,你的内存就满了。
@JacksonTian N 是要有一定数量啊,,,, 适当地加些限制和回收策略,还是可以谨慎一试吧
@dead-horse 额像android里的硬引用
@Hi-Rube 如果不能限定这个N。就最好不要用。
@JacksonTian 恩,问题很多
大致看了一下,推荐一下我用过的两个包:
- lru-cache
- node-cache
其实虽然和那些真正存储媒介相比有差异,但是这种缓存思维是肯定有一定好处的
@yaochun thanks
如果是考虑tcp请求延迟,还不如在nodejs同一个服务器上装个redis当缓存。 js的计算效率始终是赶不上c c++编写的数据库的。
这是在内存中,一个执行流有效,当第二个请求的人来了;它就无效了吧;