Asp.net 缓存数据的问题!另关于 CacheDependency 的使用问题!

parsely 2005-05-30 09:32:09
我在做数据缓存的时候,通常用这两种方法:

1.
Cache.Insert("datalist", ds,null, DateTime.Now.AddMinutes(5),TimeSpan.Zero);


2.

Cache.Add("datalist",ds,null,DateTime.Now.AddMinutes20),TimeSpan.Zero,CacheItemPriority.High,null);

这两种方法是手动设置缓存过期时间的

-------------------------------------------------------------

可是现在我的想法时这样的:不用手动设置过期时间,我想读数据的时候,如果数据没有变动(或是没有新数据)时,缓存就不过期,如果有数据变动(或是有新数据)了,则缓存自动过期,然后,读取数据库中全新的数据,再缓存下来。我看资料是用一个什么 CacheDependency,可是不知道如何俱体使用。

不知哪位老大有过这方面的使用经验 ,帮我一下!给一个小例子。

--------------------------------------------------------------------

**********

还有就是,缓存数据的时候,必须用 dataset 吗?用datareader 不可以吗?
...全文
197 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2005-05-30
  • 打赏
  • 举报
回复
>>当我有数据改动时,我同时,也修改 change.txt

这样你得的缓存就会被清除,下次你访问这缓存时,返回的结果是null,你就需要重新获取数据

>>是不是就可以实现我说的功能 了??


parsely 2005-05-30
  • 打赏
  • 举报
回复
思归大哥:

对于这句话

Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("change.txt")));

我现在是不是可以这样理解:

假如我缓存了我的 DataSet ds ,而我的缓赖项是 Server.MapPath("change.txt") 这个文本文件,
当我有数据改动时,我同时,也修改 change.txt ,这样,我的数据改动就能和 change.txt 同步了,是不是就可以实现我说的功能 了??
saucer 2005-05-30
  • 打赏
  • 举报
回复

这样你的缓存就依赖这个文件,如果这个文件改动,你的缓存就清除了,在SQL Server
2000里,做法是,数据改动就改变这个文件,这样同时就清除你的缓存,在SQL Server
2005里,做法就更加简单
parsely 2005-05-30
  • 打赏
  • 举报
回复
Cache.Insert("MyData", Source, new CacheDependency(Server.MapPath("authors.xml")));



这个是什么意思? CacheDependency(Server.MapPath("authors.xml")) 我是想当数据发生变化的时候,缓存失效,现在这个是当这个 xml 文件发生变化时,缓存失效吧,可是我想让当我数据库表 userinfo 中的数据发生变化时,缓存失效,该如何做呢?
saucer 2005-05-30
  • 打赏
  • 举报
回复
in .NET 1.*, see

http://www.dotnetjunkies.com/Tutorial/A4ED5FD6-D385-4475-A357-27CF43A78205.dcik

http://www.codeproject.com/cs/database/DatabaseEventsArticle.asp

http://msdn.microsoft.com/msdnmag/issues/04/07/CuttingEdge/
华博 2005-05-30
  • 打赏
  • 举报
回复
用datareader 不可以
速马 2005-05-30
  • 打赏
  • 举报
回复
>>> 我想读数据的时候,如果数据没有变动(或是没有新数据)时,缓存就不过期
>>> 如果有数据变动(或是有新数据)了,则缓存自动过期

这样你可以设置缓存时间为最大值,当数据变动的时候(如果你知道的话),主动刷新缓存
或者可以在数据库上加触发器,模拟.NET 2.0中的sql dependency
parsely 2005-05-30
  • 打赏
  • 举报
回复
比如:

sql = "select * from userinfo";

我想把这个数据缓存下来,然后,如果有新用户注册进来了,或是,有人改动了 userinfo 中的信息,自动让缓存失效
Overriding 2005-05-30
  • 打赏
  • 举报
回复
关键是你的数据是保存在什么地方?
哪个依赖是和一个或者一组文件关联的。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧