日期:2014-05-17  浏览次数:20397 次

.net 缓存的相关问题
我有一个表   里面记录大概在50万   经常要看的有10w左右    而且查看的频率特别大   高峰时分分钟select几万次
  为了减轻数据库查询压力   我把这个表的每条记录都以id为key放入了cache里   这样数据库的压力确实是比以前小了很多,但是我在缓存管理页面发现有时候有十几万条缓存记录  但过了会又变成几千 或者几万条了
  
我估计是被自动清空了  但看内存使用一直都不是很高   我每条缓存的东西也就是几十个字符

想请问。net对缓存有没有大小限制  有的话该怎么破   
 或者是不是缓存数有限制  超过多少条后自动清空了  

------解决方案--------------------
应该有限制的
------解决方案--------------------
这个应该看内存。只要内存足够无上限
------解决方案--------------------
cache有过期策略,不设过期的话内存有多少用多少,内存用光了会自动清掉一批,另外iis的应用程序池里也有设置内存大小
------解决方案--------------------
不懂你为什么非要把10w的数据放到缓存去,这样好玩咩?


缓存不是这样用的,缓存只适用于一些简单的常用的数据,不合适做大数据存储,你服务器内存很大时另当别论

对于大数据查询我们的SQL有已分区表和已分区索引

就是很一个表或一个数据库分为很多个文件来存储(有规律的文件存储),每次只去查询相应的文件,这样就实现了大数据的快速查找
------解决方案--------------------
哪有这样做缓存的,10w条的数据放进缓存,丢失的原因是web.config被修改过或站点被重启。
其实,几w,十几w的数据级别没什么压力。
------解决方案--------------------
缓存可以使用的大小与.net没有关系,只与机器有关系。
------解决方案--------------------
Web缓存基本是不稳定的。因为你都不知道哪一秒IIS应用程序池会进行回收。所以如果你拥有服务器权限的话,建议开辟较大的内存区域进行部署Memcache分布式缓存策略。会比Web缓存优势的多。另外缓存几千条高频率访问的常用数据还是比较正常的。缓存10W条的数据也不是说不可以。问题是你的服务器内存那估计得很大才能满足生产需要。否则感觉10W条数据的缓存这个还真的有点很不合适。譬如确实是10W条常见类型的页面列表这类的,你可以采用静态页面来定期更新。而不应该再用缓存存储这么大量的数据。。这时候你可以考虑数据库的性能优化方式和其他实现方式。
------解决方案--------------------
可以将数据库分为活动与不活动两个表, 查询时加个条件,按时间段查
------解决方案--------------------
如果你用IIS的缓存的话 他会根据你的系统情况 自动的来缓存的
你可以自己写一个缓存服务器 你可以百度 memcached 看一看