聊聊缓存

缓存在应用中经常可以遇到,大的可以表现为分布式缓存服务和外部的缓存服务应用,小的可以使用应用级的缓存。

缓存的主要作用,一是可以加快热点数据访问速度,二是保护后端的数据库不被突然增长的压力压垮,三是减少计算,是以空间换时间的典型应用。

 

从分类上来说,缓存可以分为外部缓存服务和应用缓存。

外部缓存服务可以表现为MemCache、Redis、MongoDB等。

应用缓存可以使用HashMap自实现,也可以使用Guava的缓存Cache。

 

缓存的失效策略:

1. Timeout算法,设置有效期,超时失效。

2. LRU(Least Recently Used)算法,最近最少使用的缓存先失效,是依据时间来判断是否应失效。

    LRU算法并不太科学,因为使用时间来判断缓存是否应失效,会导致最新的缓存存在,但是却有可能,最新       的缓存的使用频率并不高,并不是热点数据。 

    实现可使用链表来实现,最近使用的数据,放入链表头,需要移除数据时,从链表尾移除。LinkedHashMap     的实现支持这一算法。

4. LFU算法(Least Frequently Used),最近最少使用次数算法,是依据使用的次数来做判断。

3. FIFO算法,最先进入的缓存最先移除。

 

缓存的一致性:

需要在数据源更新时,同时通知缓存更新,否则出现缓存和数据源数据不一致的情况。

 

其他的缓存分类还有Http缓存、页面缓存、数据库缓存等,有兴趣的可以自行去网上搜索学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值