摘要: 缓存二字,从字面上分为两块:“缓”与“存”。上节我们提到的缓存原理,其实是在讲的一个“存”字,如何存取。大致回顾下是key对应的hashcode,根据hashcode作为数组下标来存取,因为存在hash冲突,速度虽达不到O(1),但也是非常之快。今天就说下“缓”的策略。 缓,便意味着“暂时”的意思,过一段时间就不再存在或被替换掉了,所以我们要说的其实是缓存的过期策略。在缓存入门篇中,主要提到了Cache类的Insert的方法,其中的几个变化的参数寓意着各种缓存策略,有具体依赖的有按时间的,一一来看。 按过期时间缓存 这种缓存策略最为简单,只要判断当前时间是否超过了指定的过期时间就remove. 阅读全文
posted @ 2011-08-01 14:48 君之蘭 阅读(671) 评论(0) 推荐(0) 编辑
摘要: 上次我们了解了缓存的基本使用技能,也知道为什么要用缓存,但只是单单谈到了缓存的优势的一点:就是缓存避免的重复性的耗时操作,提高系统性能。其实,如果缓存使用不当,会适得其反。为了避免这种情况的发生,我们更适合了解下缓存的原理。虽然缓存不仅仅是指缓存在内存里的数据,但本节还是以内存为主。 假如说A市有1000万人口,我们要根据某个身份证号码,查出这个人的资料,该如何做呢? 有两种做法: 1、把这些数据录入数据库,然后给 身份证 建立唯一索引,然后查询 身份证 = xxx 的用户 2、遍历所有用户,返回 身份证 = xxx 的数据 第一种是我们最常见的办法,当然也是比较现实的做法,但要依赖与某数据库 阅读全文
posted @ 2011-08-01 14:46 君之蘭 阅读(836) 评论(0) 推荐(0) 编辑
摘要: 昨天在群里有个朋友问,如何使用数据库的临时表。问其原因,原来是他想把查询的结果导出excel,但是苦于查询结果是100个里面随机挑出50个,所以他想把查询结果放在临时表里,导出的时候查询临时表。这个方法不是不可取,其实更好的办法就是把查询的结果DataTable,放到缓存里,导出的时候直接使用就行了。然后群里的同学们都纷纷表明如何使用缓存。本次我们就讲下.Net Framework自带的缓存类,这也算是走进缓存使用的大门了。Web开发中,常用的两个缓存对象是HttpContext.Cache和HttpRuntime.Cache,这两个对象的类型都是System.Web.Caching.Cach 阅读全文
posted @ 2011-08-01 14:45 君之蘭 阅读(807) 评论(0) 推荐(1) 编辑
摘要: 什么是缓存?对于刚入门的朋友来说可能比较模糊,或是只知道是个提高性能的东东。我按我的理解说一下:缓存的目的就是为了提高性能,而把一些数据存放在内存里,方便程序反复使用,所以缓存就是放在内存里的那些数据。那么我们在开发程序时,比如定义了一个静态变量,这个静态变量的值一般都会被一直存放在内存里,这个变量就是缓存了。当然这个缓存的生命周期是第一次被调用直到程序结束。也并非说只有全局的静态变量才叫缓存。比如我们在一个httpRequest接收开始便声明了当前上下文(CurrentContext),那么在整个页面的生命周期里,我们都可以获得当前上下文,那么这个Context也是缓存。 假如我们把... 阅读全文
posted @ 2011-08-01 14:44 君之蘭 阅读(606) 评论(0) 推荐(0) 编辑