关于实时数据缓存问题

changlr01 2012-04-04 09:09:41
类似于论坛,帖子列表,这样的列表需要缓存吗,

如果不缓存有什么方法解决数据库性能问题,

如果缓存的话,如何保证数据的及时性

请高手指教!
...全文
294 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
changlr01 2012-04-06
  • 打赏
  • 举报
回复
嗯 谢谢各位大牛们。。清楚了
hundanbaobao001 2012-04-05
  • 打赏
  • 举报
回复
不用缓存有个比较笨的方法就是,前台读xml,而xml数据是后台动态的app去跑的。根据你的需要定时load xml文件。
通常 xml + 缓存一起使用。达到最佳效果。
但是论坛的交互性太强,个人觉得只能从数据库入手。还是看看大牛们是怎么说的吧
  • 打赏
  • 举报
回复
缓存表面看来很好用,实际很容易出问题,而且出了问题不容易排错。所以使用缓存,需要较高的技术和经验。

我理解不深,只体会到这么几点:
1.缓存只能提高多次访问的性能,对第一次访问没有影响。如果对第一次访问的性能要求较高,需要想其他办法。
2.用了缓存,必须提供缓存数据失效/出问题时,重新装填缓存的方法。缓存数据的同步是非常重要的。
3.客户端缓存,好处是性能较高,缺点是可能有安全问题。服务端缓存,资源消耗较大,大数据量应慎用。
4.如果web程序用了cache,可以用这个小技巧在必要的时候强行更新cache,而避免重起应用程序池:
程序里定义一个特殊的query string,检测到时就更新cache。这样,开发员可以在任何一个浏览器端输入这个query string,更新cache。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
如果不缓存有什么方法解决数据库性能问题,
[/Quote]

数据缓存应该看作是数据库编程的一种基本技术,就好象会编写界面代码的人也应该开始会用一些界面设计师的工具一样。只是程序员水平低的时候,可能不会为缓存编写合适的代码这种技术,而只会写sql语句。这是好像是哪怕是最烂的饭馆里的厨师也必须会用基本的调料来做菜,谈不上“其它什么方法”。
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
类似于论坛,帖子列表,这样的列表需要缓存吗,

如果不缓存有什么方法解决数据库性能问题,

如果缓存的话,如何保证数据的及时性

请高手指教!
[/Quote]

缓存技术的关键,当然就是设置缓存依赖项,也就是保证当缓存失效时尽可能立刻清除缓存。不知道这个,只是把数据放到内存里,那是滥用缓存的。

例如有人说把一个数据库表放到内存里,把这个叫做缓存。那么这整个缓存单元的命中率,就是由命中率最低的那一条记录的命中率决定的。所以整个表就不应该缓存到内存里。而是你的程序用什么样的sql语句查询一页数据,根据sql语句作为key来创建缓存单元、保存缓存结果。

例如一个繁忙的论坛,它可能一小时被提交2千次,而被读取4万次,那么就算每当有帖子被提交、被回复的时候首页缓存单元就自动被清除(就像简单的SqlDependency做的那样),实际上也可以将数据库查询次数减少到5%,效率当然大大提高。而假设保存帖子、回复帖子操作的时候判断是否影响到首页然后才去修改一个缓存单元,而首页数据的缓存单元是依赖这个缓存单元的,那么就可以进一步将少首页读取数据库的次数。

如果可能,使用页面/片段缓存是效果最好的。数据缓存只是其次。
chen_ya_ping 2012-04-04
  • 打赏
  • 举报
回复
可以缓存最新的100条记录,这个有新的到来时,先改变缓存,然后同时写入数据库。
xray2005 2012-04-04
  • 打赏
  • 举报
回复
列表分页显示,不用缓存。每页可以考虑一下。

62,046

社区成员

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

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

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

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