美文网首页
SpringBoot缓存

SpringBoot缓存

作者: inverseli | 来源:发表于2018-09-29 21:34 被阅读0次

    缓存三问 ???

    如果所有操作都是对数据库进行操作,那么势必会对数据库造成很大压力,这时候如果把热点放到缓存中是一个不错的选择。缓存还可以进行临时数据的存放,比如短时验证码之类的。

    • 如今流行的缓存技术?

      Redis、EhCache 2.x 、Generic、JCache (JSR-107)、Hazelcast、Infinispan、Guava、Simple

    关于JSR-107标准

    JSR-107

    实例

    pom.xml引入必要依赖

        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
    

    UserRepository.java

    package com.inverseli.learning.domain;
    
    import org.springframework.cache.annotation.CacheConfig;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    
    /**
     * @author liyuhao
     * @date 2018年9月30日上午10:07:12
     */
    @CacheConfig(cacheNames = "Users") // 缓存在名为Users的对象中
    public interface UserRepository extends JpaRepository<User,Long>{
        // 将该方法的返回值存入缓存中,并在查询时先从缓冲中获取,获取不到,在到数据库中进行获取
        @Cacheable 
        User findByName(String name);
        
        User findByNameAndAge(String name,Integer age);
        @Query("from User u where u.name=:name")
        User findUser(@Param("name") String name);
    }
    
    

    注解详解

    @Cacheable: 将该方法的返回值存入缓存中,并在查询时先从缓冲中获取,获取不到,在到数据库中进行获取
    @CachePut: 配置于函数上,能够根据参数定义条件来进行缓存,它与@Cacheable不同的是,它每次都会真是调用函数,所以主要用于数据新增和修改操作上。意思就是说无论缓存中是否有数据,我都要进行方法执行,进行缓存中数据的更新。
    @CacheEvict: 配置于函数上,通常用在删除方法上,用来从缓存中移除相应数据。除了同@Cacheable一样的参数之外,它还有下面两个参数:
    allEntries:非必需,默认为false。当为true时,会移除所有数据
    beforeInvocation:非必需,默认为false,会在调用方法之后移除数据。当为true时,会在调用方法之前移除数据。

    参考 - http://blog.didispace.com/springbootcache1/
    完整实例 - https://github.com/Inverseli/SpringBoot-Learning/tree/master/learning4-4-1

    相关文章

      网友评论

          本文标题:SpringBoot缓存

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