请教一个有关数据缓存的问题

cs_esharp 2012-08-26 12:14:25
在asp.net中,或silverlight中,如果一个系统支持多个独立数据库,每个数据库可以由多个用户在系统中操作,
同时查询出的数据要求在服务端分页,而不是在数据库里分页,就算是同一个报表,也会存在查询条件和时间范围不一样,所查出来的数据就会不一样,那么如何存放不同数据库,不同用户,不同查询条件下查出来的数据呢
...全文
174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
任何查询,都是先将查询条件变成key到缓存系统里找一下,如果没有则查询数据库并将结果插入缓存系统里备用。这是一个模式。

我看不出这有什么技术含量。对于一个通用的bll层来说,这只需要几行(或者十几行)通用的代码(而不需要为每一个业务逻辑单独写代码)。实际编写过需要大规模查询业务数据的程序,你就会重构出缓存架构来。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
在asp.net中,或silverlight中,如果一个系统支持多个独立数据库,每个数据库可以由多个用户在系统中操作,
同时查询出的数据要求在服务端分页,而不是在数据库里分页,就算是同一个报表,也会存在查询条件和时间范围不一样,所查出来的数据就会不一样,那么如何存放不同数据库,不同用户,不同查询条件下查出来的数据呢
[/Quote]

每一个数据缓存单元都有一个词典key,这样你才能向缓存系统插入一个缓存数据。而此key,可以使用(例如)sql语句或者其md5值。你也可以不仅仅包括sql,可以包括更多信息。

关键地它是key。仅此而已。
cs_esharp 2012-08-26
  • 打赏
  • 举报
回复
问题补充: 这个我觉得在B/S中,可能还是得服务器端缓存吧

因为用户操作查出来后,那么分页显示是,就不用再从数据库里去读取了
包括用户双击报表头排序

也就是用户来操作排序时,也不用从数据库中读取

这个处理的效率关键在于不用重新从数据库中读取

报表一般来讲列比较多,用户可能在不停的做排序操作
如果都从数据库读取,效率可想而知

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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