【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
SpringBoot提供了缓存的统一整合接口,方便缓存技术的开发与管理
【为什么要改,因为专门做缓存的公司搞的缓存技术更专业,哈哈哈哈】
【这一节用 Ehcache】
【导入坐标】
<dependency>
<groupId>net.sf.ehcachegroupId>
<artifactId>ehcacheartifactId>
dependency>

【配置】

改成ehcache

如果我pom 中不提供坐标,这里又要硬用

可以看到, 工程都跑不起来
恢复正常,再次运行

可以看到,打开了,还是报错了
【原因】
ehcache 是一个 Spring 以外的技术,要想使用必须对它进行配置
在resources 目录下添加一个新的配置文件,ehcache.xml

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
updateCheck="false">
<diskStore path="D:\ehcache" />
<defaultCache
eternal="false"
diskPersistent="false"
maxElementsInMemory="1000"
overflowToDisk="false"
timeToIdleSeconds="60"
timeToLiveSeconds="60"
memoryStoreEvictionPolicy="LRU" />
ehcache>
再次重启服务器

OK,成功启动了
跑一下我们做的手机号验证码案例

好家伙,又直接报错了
【原因是】
我们之前写了一个缓存空间名称,想起来了

这玩意儿,现在我们换缓存技术了,它找不到这个东西,

因为默认的时候我们啥也没配,但是,现在换技术了,就要进行配置了
配一下
<cache
name="smsCode"
eternal="false"
diskPersistent="false"
maxElementsInMemory="1000"
overflowToDisk="false"
timeToIdleSeconds="10"
timeToLiveSeconds="10"
memoryStoreEvictionPolicy="LRU" />

现在就声明了这个空间了
再次运行

成功启动,再次跑一下那个案例
获取验证码

校验

没毛病
可以看到,我们压根儿没有修改代码,就添加了一些配置,就无缝换到一种新的缓存技术了
现在试试修改一下缓存的过期时间

那就不改了,这说明什么,10s 钟之后这个缓存就毙掉了
试试

没毛病,刚好十秒
【不同的数据就可以设置不同的缓存策略】【喵喵喵啊!】
回顾一下




【数据淘汰策略】
数据淘汰策略中的LRU 和 LFU 的区别
【影响数据淘汰的相关配置】
LRU: Least Recently Used
LFU: Least Frequently Used
举个栗子:

在这9秒钟,这四个数据一共被访问了9次,每个key 头上的数字就代表其被访问的次数
下面的秒数 是 对应的key 最后一次被点击的秒数
OK,现在一个问题,5s 和 7s 哪一个访问离现在更短,很明显 是7s
现在这4个 key 中离现在时间最短的是哪个?很明显是 9s【说明9s 对应的name key 刚用过没多久】
最长是5s age, 说明这个key 在这段时间里,已经好久都没有访问过了

那么LRU 就是淘汰age 这种数据,最长时间没有被使用的

再看这两个数据,4 和 1,说明age 使用率比较高
那么LFU 就是这样一种策略,淘汰最不频繁被使用的
