当前位置:编程学习 > C#/ASP.NET >>

缓存问题

在做网站统计,客户要求不要第三方来统计,因为访问量大,服务器来不及总是丢失数据。所以我现在想用缓存来做,把数据放到一个List<Model>,放到缓存里,然后一段时间才一次性添到数据库里。。但缓存我知道的不多,我是属于那种不用
我的问题
1.我不需要查询,只是把用户添加缓存(在网上看了知道怎么去添加但自己怕这样会不会乱用,以前学习好像有一种,依赖缓存数据这样效率会高点)
2.经常在缓存里做添加、删除会不出什么问题(内存溢出等等)
3.缓存过期时间我怎么设置。 缓存 --------------------编程问答-------------------- 忘记给高分。。。 --------------------编程问答-------------------- 缓存也不太了解,帮顶吧! --------------------编程问答-------------------- 服务器来不及总是丢失数据

先解决了你的bug再说吧。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 你这个情况可以做数据库缓存 ,也是说 当数据库没有变动的时候 页面是不会变动的,当数据变动 缓存失效然后才会更新数据。
你说的用页面缓存 也是可以,但是这样的话,缓存的丢失时间你不好控制,如果你把数据放到list<T>里面 第一个用户访问之后缓存会在应用程序池生成,之后的用户访问的数据是跟第一个用户访问的一样,这样会导致,页面数据更新不正确显示。 缓存不失效页面呈现的效果永远会一样。 --------------------编程问答-------------------- 最好用dictionary来存储,查询速度会高一点 --------------------编程问答-------------------- 服务器会丢失数据 那么内存更不保险 不用想了
你可以考虑第三方流量统计插件 --------------------编程问答-------------------- list<T>之类的不是缓存 而是虐待内存
如果要用缓存 请查阅webcache或者runtime.cache
这个才是.net友情赞助的正版缓存

推荐使用后者 --------------------编程问答-------------------- 推荐用这个统计
http://bbs.csdn.net/topics/390629697 --------------------编程问答-------------------- 访问量能有多大?
http://bbs.csdn.net/topics/390629697 --------------------编程问答-------------------- 得分析具体情况,如果时间及压力可以使用WCF;

如果是操作性质缓存,可以使用 数据库+NOSQL,还是得先找到瓶颈的位置 --------------------编程问答-------------------- 1.)HttpContext.Current.Cache.Insert("key", value, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration, CacheItemPriority.High, null);

Add方法和Insert方法略有不同.

Add方法,当你Cache里有相同的key时,他不会覆盖原有的key的值,但Insert会

key为缓存的钥匙
value为你要保存的值得
DateTime.Now.AddMinutes(30)是设置过期时间
最后的那个参数是个事件,当缓存过期的时,你要执行的方法,

2.)
这个没法回答你,只要操作恰当,应该不用当心

3.)
1里面已经说了 --------------------编程问答-------------------- 用cache 吧,,,, --------------------编程问答-------------------- 用memcached --------------------编程问答-------------------- 缓存也不是万能的哇
也会丢数据的 --------------------编程问答-------------------- web是多线程处理的,估计是你没有处理好“并发”访问
经常在缓存添加移除很正常,.net以强健著称,要是这样都leak了,谁还敢用 --------------------编程问答-------------------- 与缓存无关。

缓存只是用来解决反复查询的问题,例如相同的一个查询返回结果(而不是修改数据的)sql语句反复使用几千遍,你就值得使用缓存。 --------------------编程问答-------------------- 如果你只是把数据记录在内存,这就是普通的在程序里声明一个变量而已,这不要夸大成什么“缓存”技术,这实在是没有半点技术。

但是虽然这不需要技术,可是遇到asp.net这又是难以实现的,因为asp.net会随时重启。

因此你应该解决你的程序的数据库语句为什么“丢失数据”的问题。解决这个问题,然后解决你的数据库为什么这么慢的问题。例如你可以选择MongoDb,它的写入速度很快。你也可以使用部署在独立服务器上的内存数据库系统。 --------------------编程问答-------------------- 在做网站统计,客户要求不要第三方来统计,因为访问量大,服务器来不及总是丢失数据。所以我现在想用缓存来做,把数据放到一个List<Model>,放到缓存里,然后一段时间才一次性添到数据库里。。但缓存我知道的不多,我是属于那种不用
我的问题
================>
你这个跟缓存没关系。无非就是你想自己做一个统计器,然后因为太频繁数据库表操作。导致性格上有问题,所以你想临时存储到缓存然后再批量更新数据库表而已。
从本意上这样性能优化是可行的。不过针对的是数据不是很严格的情况下,因为asp.net网站是居于IIS程序池来管理的,啥时候缓存丢失谁也不清楚。。所以将统计数据临时加到缓存表里面,间隔5分钟或几分钟再去更新数据库,就关键看你客户是不是要求非常精确。精确的话,还是选择其他方案吧。或采用第三方相对稳定点的内存管理,比如Memcache --------------------编程问答--------------------

来过呀!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,