需求:根据一本书的ID返回此本书的详细信息函数为getBookInfo(string bookId),当我在客户端调用的时候只要bookId不变我就直接从缓存里面去。如果bookId变了,我再缓存一个?但同时可以执行一些其它操作,现有两种方式如:
1、[WebMethod(CacheDuration = 600)]
public Book get(string bookId)
{
//执行一些其它操作doSomething();
getBookInfo(string bookId);
}
此种方式可以缓存,并你多次传入不同的bookId他都会把几本书的信息都缓存,但你在缓存有效期内去调原来调过的书就不需要访问数据库了,虽然getBookInfo()得到的数据是缓存了,但是它也没有执行其它操作doSomething();
我现在是需要只缓存getBookInfo就需要使用另一种方式数据缓存
2、Context.Cache.Insert(……)
需要依赖bookId的改变来改变,需要怎么弄?谢谢,请给我一个详细的解决方案和例子

解决方案 »

  1.   

    本来不可以公开的,看想想以前也是这样很辛苦过来,所以给楼主分享个知识组件:
    Quartz  .net  版
    ==========
    这个可以非常灵活的进行计划任务,单你上面那个缓存定时更新和清除,就不再话下,
    这类的服务,都写过非常多个
      

  2.   

    需要依赖bookId的改变来改变,需要怎么弄
    ==========
    你就利用上面那个计划任务,定期从你数据库中查询全部的bookID,然后循环清除缓存就可以,不需要什么缓存依赖项
      

  3.   

    需要依赖bookId的改变来改变,需要怎么弄
    ==========
    你就利用上面那个计划任务,定期从你数据库中查询全部的bookID,然后循环清除缓存就可以,不需要什么缓存依赖项=========
    应该不行,我不是要定期,我是在很短时间内要点不同的书,需要把点了的书的信息在一定时间内都缓存起来