快速业务通道

网站缓存数据实时更新的实现 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25

网站缓存数据实时更新的实现

时间:2009-10-10 javaeye kongshanxuel

一个网站的实现不可避免的需要处理大量的内存数据,这大多都出于网站性能的考虑和解决I/O瓶颈问题,如JavaEye网站的首页排名数据和博客频道的排名等数据,都进行了缓存处理,而且并非是实时的,特别是首页的排名数据几乎是一天才会更新一次的,同样,QQ等门户网站也存在大量静态化内存数据,所以一个网站缓存的处理是至关重要的,并且好的架构需要做到代码无侵入性,也就是说内存的更新,日志的记录等操作都应该是“切面”处理,在我后来的网站开发中,我一般都会定义一个缓存类,如下:

Java代码

public static LinkedList<Login> regRecentUser=new LinkedList(); //最近注册人员  public static LinkedList<Login> regLoginedUser=new LinkedList();//最近登录人员  public static List<Topic> hotTopic=new ArrayList();//最热发表话题

并且会自己实现对象的排序接口,如最热门的话题,可能是按话题对象的某几个属性的权重分配来实现的,类似代码如下:

Java代码

public class TopicCompare implements Comparator{     //热门的话题与顶的数目和评论的数目有关,权重分配比例为4:6   public int compare(Object arg0, Object arg1) {  if((arg0 instanceof Topic) && (arg1 instanceof Topic)){   double y=((Topic)arg0).getAgreeit()*0.4 + ((Topic)arg0).getCmtnum()*0.6;   double h=((Topic)arg1).getAgreeit()*0.4 + ((Topic)arg1).getCmtnum()*0.6;   if(y==h) return 0;   else if(y>h) return 1;   else return -1;  }  return 0;  } }

缓存的切面更新一般我喜欢使用Spring AOP,简单而实用,一般需求都能满足,Aspect语法比较复杂,没时间看,呵呵

Java代码

import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; import com.common.cache.WebCacheUtils; import com.cxlh.dao.hibernate.Login; public class LoginAdvice implements AfterReturningAdvice {  public void afterReturning(Object returnValue, Method method, Object[] args,   Object target) throws Throwable {  if(method.getName().equalsIgnoreCase("checkUserLogin") && !returnValue.toString().equalsIgnoreCase("null")){   //最近登录用户缓存更新   System.out.println("=======update login cache");   WebCacheUtils.addRegLoginedUser((Login)returnValue);  }else if(method.getName().equalsIgnoreCase("addUser")){   //更新最新注册用户缓存   System.out.println("=======update add user cache");   WebCacheUtils.addRegRecentUser((Login)args[0]);  }  } }

这样,最近登录和最新注册用户的缓存数据都会按自定义排序规则进行实时的缓存更新了,不知道这样的实时缓存处理对于大并发量的网站是否能满足要求,没有进行过性能测试!慎用!!!

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号