现在有一个需求需要我频繁写入数据库数据 但是频繁访问我觉得太慢了 所以我想把数据先放入缓存中 然后再定时一次性写入数据库 请问我应该怎样做呢?我之前没用asp.net mvc做过项目 能给我一个demo参考一下吗?谢谢!
作为需要建议的一部份,我认为你使用频繁两字很不恰当。
使用1次/分钟,1次/秒,1次/毫秒,1次/微秒,这样的表达起码还能够达到数量级的概念。
将多次写入需求放在一起,其实也会出现另外一个问题的,实际操作上你还得控制一下,大概20组数据或是100组数据一次性写入,否则当大量数据一次性写入时,也会引起数据库的强烈不满。
楼上说的MSMQ主要的目的是为了排队,就是防止数据库引擎来不及响应你的写入需求,将需求放在消息队列里面,
一旦使用了MSMQ,可以说你的系统就脱离了屌丝的命运,进入了高富帅的行列,
所以如果不是到了想不开的程度,请慎用。
凡是涉及到大量、频繁或是安全这样的字眼,不同的人看到的完全不一样,你认为10万元级别的,可能有人认为是1亿元级别的。所以泛泛而论基本没有太大的意义,关键还是要看你的应用频繁到什么样的程度。
大约能有1分钟1次,请问我该怎样解决这个问题最好呢?
@安钲熙:
1分钟1次真不能称上频繁。你为什么会觉得太慢了呢?谁给你这个感觉的?
是直觉还是测试的结果?实际上很多时候,甚至是建议将大量的数据分成多批小量保存。
书上是有说建立连接比较慢。(但这个比较慢也已经是毫秒/微秒级的慢)
通常情况下,不是用于BAT这种级别的大鳄的页面,最耗时的基本是页面的加载,渲染等前台时间,
保存那一点时间基本可以忽略不计。
@爱编程的大叔: 访问量大了以后估计就不止了...哎 烦恼
这种啊,最好的解决方案是使用微软的消息队列.
访问一次就发一个消息到消息队列.
再写一个控制台程序在那循环处理消息队列中的消息.
这种东西不能直接在iis里做.因为iis应用程序池是不稳定的.
万一你要写入的东西在缓存里.然后IIS重启了.就丢失了
能写个例子看看吗?多谢
@安钲熙:```不能,我只能说大概流程,实际代码还是得你自己写```
到底 是哪里慢了,访问慢了,是指访问数据库...?
可以先写缓存,再写数据库。这样访问缓存....
一次性插入大量才会慢,频繁插入少量 是不会慢的。。。。
我们做法是 还不如每次尽快插入呢,比如采用多线程 让它尽快插入,这种时候 比你的肯定大得多。。。
频繁读取是不可取,但频繁需要插入更新新数据,是可以的。。。你按感觉来说是不行的,建议你 测试一下 看看到底是有多慢。、、。、
1分钟一次也不算频繁吧,这样的情况是不是能缓存一个list对象,每次插入都更新该对象,当条数达到一定的程度,就批量插入清空缓存对象?
如果你的网站会朝着大数据发展,那么分布式缓存会比较适合
微软好想有个缓存框架,你去搜索一下