单例模式是OO设计层面的东西,说它是“缓存”,不如说它是类的一个实例在一个进程内的永久存储,因为它不会过期、不会被重建,而且单例模式很少用于维护很多状态属性的类(比如实体类),更多的是用于无状态属性或者状态属性全局必须一致的情况。
而相对于单例模式,通常意义上的缓存是为了加快数据访问而采取的一种介于业务对象和持久化数据间的缓冲处理手段,缓存的数据有可能是业务对象实例,也可能是对象的序列化结果。我们一般会把缓存定义为不可信的,它随时可以根据自己的机制将数据销毁(过期或LRU),而当缓存读取失败时再取读取持久化数据并重建缓存。缓存有多种方式——文件、内存、分布式等等。
我们可以看到单例模式和缓存的相同点并不多,在OO设计层面,与缓存更加类似的是对象池(比如数据库连接池、线程池等等)技术,同理,其区别在于一个用于加快持久化数据的访问,一个用于避免对象的重复创建。
当然,我们也完全可以把单例模式和对象池技术看做“缓存”的一种特例。
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
[url]http://www.iteye.com/topic/966903?page=2[/url]
而相对于单例模式,通常意义上的缓存是为了加快数据访问而采取的一种介于业务对象和持久化数据间的缓冲处理手段,缓存的数据有可能是业务对象实例,也可能是对象的序列化结果。我们一般会把缓存定义为不可信的,它随时可以根据自己的机制将数据销毁(过期或LRU),而当缓存读取失败时再取读取持久化数据并重建缓存。缓存有多种方式——文件、内存、分布式等等。
我们可以看到单例模式和缓存的相同点并不多,在OO设计层面,与缓存更加类似的是对象池(比如数据库连接池、线程池等等)技术,同理,其区别在于一个用于加快持久化数据的访问,一个用于避免对象的重复创建。
当然,我们也完全可以把单例模式和对象池技术看做“缓存”的一种特例。
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
[url]http://www.iteye.com/topic/966903?page=2[/url]