zoukankan      html  css  js  c++  java
  • 项目总结71:Caffeine的基本概念和使用

    项目总结71:Caffeine的基本概念和使用

    start

    pom引用

            <!-- Spring boot Cache-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-cache</artifactId>
                <version>1.5.12.RELEASE</version>
            </dependency>
            <!--for caffeine cache-->
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>2.7.0</version>
            </dependency>

      application.properties配置

    self.caffeine.maxsize=1000
    self.caffeine.expire.time=100

      CaffeineConfig配置类

    import com.github.benmanes.caffeine.cache.Caffeine;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cache.CacheManager;
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.cache.caffeine.CaffeineCacheManager;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.concurrent.TimeUnit;
    
    //https://www.cnblogs.com/fnlingnzb-learner/p/11025565.html
    @EnableCaching
    @Configuration
    public class CaffeineCacheConfig {
    
        @Value("${self.caffeine.maxsize}")
        public Long maximumSize;
        @Value("${self.caffeine.expire.time}")
        public Long expireTime;
    
        @Bean("caffeineCacheManager")
        public CacheManager  caffeineCacheManager(){
            CaffeineCacheManager cacheManager = new CaffeineCacheManager();
            cacheManager.setCaffeine(
                    Caffeine.newBuilder()//创建Caffeine实例(并使用默认配置)
                    .recordStats()//开启默认打点监控策略
                    .expireAfterWrite(maximumSize, TimeUnit.SECONDS)//每次写入10秒后过期
                    .maximumSize(expireTime));//缓存最大条数
            return  cacheManager;
        }
    
    }

      service类

    public interface CaffeineService {
    
        void putValue(String cacheName,Object key, Object value);
    
        <T>T getValue(String cacheName, String key);
    }
    
    @Service
    public class CaffeineServiceImpl implements CaffeineService {
    
        @Autowired
        private CacheManager caffeineCacheManager;
    
        private final static String DEFAULT_CACHE = "default";
    
        @Override
        public void putValue(String cacheName,Object key, Object value) {
            if(key == null || value == null){
                return;
            }
            if(cacheName == null){
                cacheName = DEFAULT_CACHE;
            }
            Cache cache = caffeineCacheManager.getCache(cacheName);
            if(cache != null){
                cache.put(key,value);
            }
        }
    
        @Override
        public <T> T getValue(String cacheName, String key) {
            if(cacheName == null || key == null){
                return null;
            }
            Cache cache = caffeineCacheManager.getCache(cacheName);
            if(cache != null){
                Cache.ValueWrapper valueWrapper = cache.get(key);
                if(valueWrapper != null){
                    return (T)valueWrapper.get();
                }
            }
            return null;
        }
    }

      controller类

    @RestController
    @RequestMapping(value="/caffeine")
    public class CaffeineController {
    
        @Autowired
        private CaffeineService caffeineService;
    
        //http://localhost:8080/caffeine/put?key=k1&value=v1
        @GetMapping("/put")
        public String put(
                @RequestParam(value="cacheName",required = false)String cacheName,
                @RequestParam String key,
                @RequestParam String value
        ){
            caffeineService.putValue(cacheName,key,value);
            return "success";
        }
    
    
        //http://localhost:8080/caffeine/get?key=k1&cacheName=default
        @GetMapping("/get")
        public String get(
                @RequestParam String cacheName,
                @RequestParam String key
        ){
            String value = caffeineService.getValue(cacheName, key);
            return "success: " + value;
        }
    
    }

    end 

  • 相关阅读:
    hg下拉和上传代码
    PC下ubuntu查找PC串口并加入用户组
    pyserial安装
    profile, bashrc, source, setup.*sh
    另一篇xtion、kinect选择比较(openni下)
    OpenCV、PCL;Xtion、kinect;OpenNI、kinect for windows SDK比较
    ROS安装环境配置及多版本的切换
    ubuntu安装软件或upgrade出现 You might want to run 'apt-get -f install' to correct these
    树莓派静态IP配置
    android之MP3播放器(1)
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/13432124.html
Copyright © 2011-2022 走看看