欢迎使用CSDN-markdown编辑器

来源:互联网 发布:网络直播课堂 编辑:程序博客网 时间:2024/06/05 19:15

缓存失效 面对大量数据的请求,高并发,如何处理:
var select =function(callback){
db.select(“SQL”,function(result){
callback(result);
});

第一种办法 加入状态锁
var status=”ready”;
var select =function(callback){
if(status===”ready”){
status=”pending”;
db.select(“SQL”,function(result){
callback(result);
status=”ready”;
});
}
}
这种的话。。直接影响后续请求没有数据。。因此
第二种办法 事件队列
var proxy=new EventProxy();
var status=”ready”;
var select=function(callback){
proxy.once(“selected”,callback);
if(status===”ready”){
status=”pending”;
db.select(“SQL”,function(results){
proxy.emit(“selected”,result);
status=”ready”;
});
}
};
是不是很简单呢 用nodejs …
原理EventProxy 会把每次请求都压入事件队列
并且使用之后就会移除监听 保证只会执行一次 这样可以最大程度的确保数据库调用的重复开销
并且可以使用EventEmitter 来代替
但是要设置 setMaxListeners(0)来移除警告

0 0
原创粉丝点击