您当前的位置: 首页 >  缓存

微服务技术系列教程(07) - SpringBoot - 缓存的使用

杨林伟 发布时间:2019-11-07 18:25:09 ,浏览量:3

代码已提交到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-Cache-Demo

接下来讲解SpringBoot是如何使用缓存的,以及关于缓存文件的配置。

1.Spring使用缓存的步骤 1.1 添加Maven依赖

	org.springframework.boot
	spring-boot-starter-cache

1.2 新建ehcache.xml文件

ehcache.xml文件放在classpath目录下,即src/main/resources/ehcache.xml



    

    
    

    


1.3 代码使用cacheable
@CacheConfig(cacheNames = "baseCache")
public interface UserMapper {

    @Select("SELECT * FROM t_user WHERE NAME = #{name}")
    @Cacheable
    User findByName(@Param("name") String name);

    @Insert("INSERT INTO t_user(uuid,name, age) VALUES(#{uuid},#{name}, #{age})")
    int insert(@Param("uuid") String uuid, @Param("name") String name, @Param("age") Integer age);
}

1.4 Controller 新增接口验证(添加、查询和移除缓存)
package com.ylw.springboot.controller;

import com.ylw.springboot.bean.User;
import com.ylw.springboot.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class CacheController {

    @Autowired
    private CacheManager cacheManager;

    @Autowired
    private UserMapper userMapper;

    @RequestMapping("/addCache")
    public String addCache() {
        User user = userMapper.findByName("Dumas");
        if(user == null){
            return "fail";
        }
        return user.toString();
    }

    @RequestMapping("/getCache")
    public String getCache() {
        Cache baseCache = cacheManager.getCache("baseCache");
        if(baseCache == null){
            return "fail";
        }
        return baseCache.getNativeCache().toString();
    }

    @RequestMapping("/removeCache")
    public String removeCache() {
        cacheManager.getCache("baseCache").clear();
        return "success";
    }
}

1.5 启动类加入缓存@EnableCaching

在这里插入图片描述

1.6 测试,运行程序

1.先插入缓存,访问:http://localhost:8080/addCache,返回成功! 在这里插入图片描述 2.查询本地缓存,访问:http://localhost:8080/getCache,返回查询成功! 在这里插入图片描述 3.把缓存移除,访问:http://localhost:8080/removeCache,返回移除成功! 在这里插入图片描述 执行第二步骤,查询缓存,看看缓存是否还在?发现缓存已经被移除了。 在这里插入图片描述

2.ehcache.xml文件参数解析 参数解析name缓存名称maxElementsInMemory缓存最大个数eternal对象是否永久有效,一但设置了,timeout将不起作用timeToIdleSeconds设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。timeToLiveSeconds设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。overflowToDisk当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。diskSpoolBufferSizeMB这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区maxElementsOnDisk硬盘最大缓存个数diskPersistent是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.diskExpiryThreadIntervalSeconds磁盘失效线程运行时间间隔,默认是120秒memoryStoreEvictionPolicy当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)clearOnFlush内存数量最大时是否清除 总结

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

杨林伟

暂无认证

  • 3浏览

    0关注

    3183博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.3956s