zoukankan      html  css  js  c++  java
  • 【java】数据缓存之 EhCache缓存

    一、背景

    Java支持很多种缓冲方式:redis、guava、ehcache、jcache等。

    简单说明下redis和ehcache的区别:

      Redis:属于独立运行的程序,需要在服务器上安装运行,且使用第三方jar包对Jedis操作。因为是独立的,(在不考虑数据一致性问题的情况下)不同应用均可从Redis拿到相同的值。

      EhCache:与Redis明显不同的是,与应用程序绑定在一起,java应用活着,它就活着,且只能当前应用可查看缓存数据。

    二、先插一下(说点别的)

      先介绍下之前做过的一个项目,SpringBoot项目使用org.springframework.cache做缓存的一个例子。SpringBoot框架目的就是减少配置,“约定大于配置”,所以它已经为我们自动配置了多个CacheManager的实现,不需要再写XML文件。

      pom依赖配置:

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

      需要注意:在SpringBoot入口类中加@EnableCaching开启缓存。

     实现类

    import org.springframework.cache.annotation.CacheConfig;
    import org.springframework.cache.annotation.CacheEvict;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Service;
    
    /**
     * @Author: liuxs
     * @Description:
     * @Date: Create in 14:45 2017/11/17.
     */
    @Service
    @CacheConfig(cacheNames = "testCache")
    public class CacheTestService {
    
        /**
         * 从缓存获取value,没有则插入
         * @param type
         * @return
         */
        @Cacheable(key = "#type")
        public String getCaches(String type) {
            return System.currentTimeMillis() + type;
        }
    
        /**
         * 清空缓存对应key的value
         * @param type
         */
        @CacheEvict(key = "#type")
        public void clearByType(String type) {
    
        }
    }

      测试类

    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes = CrmApplication.class)
    @WebAppConfiguration
    @Slf4j
    public class CacheTestServiceTest {
    
        @Autowired
        private CacheTestService cacheTestService;
    
        @Test
        public void getCaches() throws Exception {
            log.info("1st:" + cacheTestService.getCaches("type"));
            Thread.sleep(1000);
            log.info("2nd:" + cacheTestService.getCaches("type"));
            cacheTestService.clearByType("type1");
            Thread.sleep(2000);
            log.info("3rd:" + cacheTestService.getCaches("type"));
            cacheTestService.clearByType("type");
            Thread.sleep(3000);
            log.info("4th:" + cacheTestService.getCaches("type"));
        }
    }
  • 相关阅读:
    Leetcode 538. Convert BST to Greater Tree
    Leetcode 530. Minimum Absolute Difference in BST
    Leetcode 501. Find Mode in Binary Search Tree
    Leetcode 437. Path Sum III
    Leetcode 404. Sum of Left Leaves
    Leetcode 257. Binary Tree Paths
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
    Leetcode 226. Invert Binary Tree
    Leetcode 112. Path Sum
    Leetcode 111. Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/liuxs13/p/7851348.html
Copyright © 2011-2022 走看看