如何用LinkedHashMap打造FIFO和LRU缓存系统

本篇文章给大家分享的是有关如何用LinkedHashMap打造FIFO和LRU缓存系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

对于缓存来说,我相信很多人都不会陌生。一般的,对于常用的一些数据,基础数据等,也或者是为了高并发,比如抢购等把热点数据放入缓存中以实现高并发快速响应。

说到缓存,Redis、memcached 等在面试中属于必问的知识点了。虽然这些专门的缓存系统做的很强大,看起来很复杂,但底层的原理其实很简单。今天我们一起来通过 LinkedHashMap 来打造两个 FIFO 和 LRU 机制的缓存系统。

FIFO 很好理解,就是 First In First Out,先入先出。就和队列一样,先进队列的先出队列。根据这个 FIFO 的这个特点,我们就可以通过 LinkedHashMap 来实现这种机制的缓存系统了。

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第1张

上面几行代码就搞定了 FIFO 机制的缓存。测试代码也很简单,如下所示:

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第2张

测试结果截图如下所示:

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第3张 

通过上面这个测试结果,可以看出,这个缓存系统并不完美。当我更新元素后,我想让它重新插入队列,相当于重新入队。因为它刚刚被更新过,说明使用频次可能更高一些。于是 LRU,这种缓存淘汰机制就应用而生了。

LRU 就是(Least Recently Used),最近最少使用,意思就是最近读取的数据放在最前面,最早读取的数据放在最后面,如果这个时候有新的数据进来,当缓存空间不够时,那么最后面存储的数据淘汰。实现代码如下所示:

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第4张

下面我们来看看测试代码:

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第5张

运行之后的效果截图如下所示:

如何用LinkedHashMap打造FIFO和LRU缓存系统  linkedhashmap 第6张    

以上就是如何用LinkedHashMap打造FIFO和LRU缓存系统,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注蜗牛博客行业资讯频道。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论电报频道链接