Atitit cache缓存之道 attilax 艾提拉总结

1. 缓存的常见参数 1

2. 缓存的实现远离原理 1

3. 缓存算法FIFO,LRU和LFU三种 1

4. 常见的缓存实施 3

4.1. 优先使用spring cache mybatiscacahe 最小化开发 3

4.2. Guavacache ehcache 工作量稍大,单可靠性高。 3

4.3. 线程池futuretask写缓存 需要调整顺序 3

4.4. Redis 最麻烦写 3

1. 缓存的常见参数

1. private int maxSize=DEFAULT_MAXSIZE; //最大數量

2. private int ttl=DEFAULT_TTL; //过期时间(秒)

2. 缓存的实现远离原理

大多数缓存的解决方案是将数据存储在类似map的结构中(key-value),正因为如此,JCache API规范的标准也是基于map(类似)的结构。

本地表格也可

List缓存,条件查询wehere缓存

其实缓存就是把一些外存上的数据保存到内存上而已,怎么保存到内存上呢,我们运行的所有程序,里面的变量值都是放在内存上的,所以说如果要想使一个值放到内存上,实质就是在获得这个变量之后,用一个生存期较长的变量存放你想存放的值,在java中一些缓存一般都是通过map集合来做的。

3. 缓存标准jcache

4. 缓存算法FIFO,LRU和LFU三种

主要分为FIFO,LRU和LFU三种,在技术点中会解释这三种是什么意思。大家一起研究和优化。笔者目前整理的一些blog针对面试都是超高频出现的。

技术点:

1、FIFO(First In First Out): 先入先出,很好理解,就和队列一样,先进队列的先出队列。

2、LRU(Least Recently Used): 最近最少使用,意思就是最近读取的数据放在最前面,最早读取的数据放在最后面,如果这个时候有新的数据进来,那么最后面存储的数据淘汰。

3、LFU(Least Frequently Used): 最不常使用,意思就是对存储的数据都会有一个计数引用,然后队列按数据引用次数排序,引用数多的排在最前面,引用数少的排在后面。如果这个时候有新的数据进来,把最后面的数据删除,把新进数据排在最后面,且引用次数为1

5. 常见的缓存实施

5.1. 优先使用spring cache mybatiscacahe 最小化开发

5.2. Guavacache ehcache 工作量稍大,单可靠性高。

5.3. 线程池futuretask写缓存 需要调整顺序

5.4. Redis 最麻烦写