//
TTL
缓存对象存储时设置一个过期时间:可以通过清理进程在达到使其时间后删掉对象,或者先留着知道下次访问时在清理。对于数据很少变更或者没有新数据的情况下,这是最好的失效策略。
显示失效
如果不能接受脏数据,那么进程在更新原始数据时需要同时使缓存失效。这种策略有两个变种:写一失效和写一更新。写一失效策略很简单:只需要标记缓存数据已经过期。写一更新策略需要多做一些工作,因为在更新数据时就需要替换掉缓存项。无论如何,这都是非常有益的,特别是当生成缓存数据代价昂贵时。如果更新缓存数据,后续的请求将不再需要等待应用来生成。如果在后台做失效处理,就可以再一个从用户请求完全分离出来的进程中生成失效数据的新版本。
读时失效
在更高旧数据时,为了避免要同时失效派生出来的脏数据,可以再缓存中保留一些数据,当从缓存中中读数据时可以利用这些数据是否已经生效。和显示实效策略相比,这样做有很大的优势,成本固定且可以分散在不同时间内。假设要失效一个有一百万缓存对象依赖的的对象,如果采用写时失效,需要一次在缓存中失效一百万个对象,即使有高效的方法来找到这些对象,也可能需要很长时间才能完成。如果采用读时失效,写操作可以立即完成,但后续这一百万对象的读操作可能会有稍微的延迟,这样就能把失效的一百万对象的开销分散了,并且可以帮助避免出现负载冲高和延迟增大的峰值。
云南然成科技有限公司是一家定位于高端网站建设、系统开发、APP开发、软件定制的高新科技公司。我们的团队成员曾来自不同行业,拥有不同背景,公司成立之前,都在互联网行业从事相关工作多年,一直奋斗在APP开发、微信开发、系统开发、商城网站开发第一线。多年的累积是一种财富,我们擅于运用所知所得诠释他们眼中的认知,更善于站在客户的立场上去思考,跨界创新,整合设计。