缓存

作者: 宽宽侠 | 来源:发表于2018-09-14 17:14 被阅读0次

小弟不才,今天发现一个新大陆:缓存

缓存可以分为服务器缓存,第三方缓存(ehcache),分布式缓存(redis,mogodb等)

那为什么要使用缓存呢?

    首先它的读写效率高,一般的数据库降数据存储在硬盘中,而缓存却是存储在内存中,优势显而易见,而缺点的话就是数据在停电的时候消失,而且内存比硬盘更贵。

众所周知缓存在大型项目中低位可谓是举足轻重,项目中少不了对数据库的操作,而频繁的操作数据,数据库的压力会变得比较大,从而导致资源请求的效率变慢,影响项目的用户体验.

java项目中spring不可缺少,spring默认使用ehcache作为缓存,springboot中配置encache比较简单

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.context.web.SpringBootServletInitializer;

import org.springframework.cache.annotation.EnableCaching;

import org.springframework.data.jpa.repository.config.EnableJpaAuditing;

import org.springframework.scheduling.annotation.EnableAsync;

@SpringBootApplication

@EnableCaching

@EnableJpaAuditing

@EnableAsync

@MapperScan({"com.wineworld.hkshop.modules.mapper,com.wineworld.hkshop.modules.saleproduct.repository"})

public class Applicationextends SpringBootServletInitializer {

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

}

在配置一个ehcache.xml文件

<ehcache>

<diskStore path="java.io.tmpdir/缓存目录名/cache" />    

<defaultCache maxElementsInMemory="100000" eternal="true" overflowToDisk="true" />

<cache name="缓存的value名" maxElementsInMemory="50000" maxElementsOnDisk="100000" eternal="true" overflowToDisk="true" />

</cache >

再到service层的实现类中加上注解进行缓存

@Override

@Cacheable(value ="user", key ="#root.targetClass + #ID", unless ="#result eq null")

public User getUserById(String ID) {

User user =userDao.getUserById(ID);

return user;

}

然后进行Controller层的编写,最后进行测试

第一次访问会到数据库中进行读取数据,加载到缓存中,在后面的访问中会直接在缓存中读书数据

我在windows7 8g i3 64位电脑上测试一个在4s左右不加缓存的访问,加上缓存只要8ms,速度快了几千倍,就想静态资源一样。

当然我们在操作对于缓存的数据库数据时,就相当于缓存失效了,就该进行缓存的清除,如调用下方法

@Override

@CacheEvict(value ="user", key ="#root.targetClass + #ID", condition ="#result eq 'yes'")

public String deleteUserById(String ID) {

return "yes";

}

到这里一次使用缓存的经历就有了,然而这里的缓存只是皮毛,我也会进行深入的学习,在后面的文章进行更新与大家分享

  

   

   

   

   

   

   

   

   

相关文章

网友评论

      本文标题:缓存

      本文链接:https://www.haomeiwen.com/subject/vaucgftx.html