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 最麻烦写