首页 新闻 会员 周边 捐助

请教一个asp.net mvc 缓存的问题

0
悬赏园豆:60 [已解决问题] 解决于 2014-06-07 15:09

现在有一个需求需要我频繁写入数据库数据 但是频繁访问我觉得太慢了 所以我想把数据先放入缓存中 然后再定时一次性写入数据库 请问我应该怎样做呢?我之前没用asp.net mvc做过项目 能给我一个demo参考一下吗?谢谢!

安钲熙的主页 安钲熙 | 初学一级 | 园豆:124
提问于:2014-05-28 09:52
< >
分享
最佳答案
0

作为需要建议的一部份,我认为你使用频繁两字很不恰当。

使用1次/分钟,1次/秒,1次/毫秒,1次/微秒,这样的表达起码还能够达到数量级的概念。

将多次写入需求放在一起,其实也会出现另外一个问题的,实际操作上你还得控制一下,大概20组数据或是100组数据一次性写入,否则当大量数据一次性写入时,也会引起数据库的强烈不满。

楼上说的MSMQ主要的目的是为了排队,就是防止数据库引擎来不及响应你的写入需求,将需求放在消息队列里面,

一旦使用了MSMQ,可以说你的系统就脱离了屌丝的命运,进入了高富帅的行列,

所以如果不是到了想不开的程度,请慎用。

凡是涉及到大量、频繁或是安全这样的字眼,不同的人看到的完全不一样,你认为10万元级别的,可能有人认为是1亿元级别的。所以泛泛而论基本没有太大的意义,关键还是要看你的应用频繁到什么样的程度。

收获园豆:60
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-05-28 10:20

大约能有1分钟1次,请问我该怎样解决这个问题最好呢?

安钲熙 | 园豆:124 (初学一级) | 2014-05-28 10:23

@安钲熙: 

1分钟1次真不能称上频繁。你为什么会觉得太慢了呢?谁给你这个感觉的?

是直觉还是测试的结果?实际上很多时候,甚至是建议将大量的数据分成多批小量保存。

书上是有说建立连接比较慢。(但这个比较慢也已经是毫秒/微秒级的慢)

通常情况下,不是用于BAT这种级别的大鳄的页面,最耗时的基本是页面的加载,渲染等前台时间,

保存那一点时间基本可以忽略不计。

爱编程的大叔 | 园豆:30844 (高人七级) | 2014-05-28 10:31

@爱编程的大叔: 访问量大了以后估计就不止了...哎 烦恼

安钲熙 | 园豆:124 (初学一级) | 2014-05-28 10:34
其他回答(6)
0

这种啊,最好的解决方案是使用微软的消息队列.

访问一次就发一个消息到消息队列.

再写一个控制台程序在那循环处理消息队列中的消息.

这种东西不能直接在iis里做.因为iis应用程序池是不稳定的.

万一你要写入的东西在缓存里.然后IIS重启了.就丢失了

吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-28 10:00

能写个例子看看吗?多谢

支持(0) 反对(0) 安钲熙 | 园豆:124 (初学一级) | 2014-05-28 10:05

@安钲熙:```不能,我只能说大概流程,实际代码还是得你自己写```

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-28 10:08
0

到底 是哪里慢了,访问慢了,是指访问数据库...?

可以先写缓存,再写数据库。这样访问缓存....

Qlin | 园豆:2403 (老鸟四级) | 2014-05-28 11:31
0

一次性插入大量才会慢,频繁插入少量 是不会慢的。。。。

我们做法是 还不如每次尽快插入呢,比如采用多线程 让它尽快插入,这种时候 比你的肯定大得多。。。

频繁读取是不可取,但频繁需要插入更新新数据,是可以的。。。你按感觉来说是不行的,建议你 测试一下 看看到底是有多慢。、、。、

孑孓子 | 园豆:226 (菜鸟二级) | 2014-05-28 13:47
0

1分钟一次也不算频繁吧,这样的情况是不是能缓存一个list对象,每次插入都更新该对象,当条数达到一定的程度,就批量插入清空缓存对象?

Rookier | 园豆:652 (小虾三级) | 2014-05-28 14:11
0

如果你的网站会朝着大数据发展,那么分布式缓存会比较适合

y-z-f | 园豆:209 (菜鸟二级) | 2014-05-28 18:46
0

微软好想有个缓存框架,你去搜索一下

静女 | 园豆:27 (初学一级) | 2014-05-29 07:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册