使用google的guavaCache来做二级缓存

使用guavaCache做一个缓存,这次主要是使用了定时过期的一个特性,由于存储时间短,所以没有使用redis

@Component
public class BaseGuavaCache {
    private static final Logger LOGGER = LoggerFactory.getLogger(BaseGuavaCache.class);

    private static LoadingCache<Integer, UserInfoBean> userInfoCache;
    @Autowired
    private IUserService userService;
    
    @PostConstruct
    public void init() {
    
        userInfoCache = CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).build(new CacheLoader<Integer, UserInfoBean>() {
            @Override
            public UserInfoBean load(Integer userId) throws Exception {
                UserInfoBean userInfoByCache = userServiceV2.getUserInfoByCache(userId, ConstUtil.RequestType.BACK);
                return userInfoByCache;
            }
        });
        
    }

    
    
    public UserInfoBean getUserInfo(int userId) {
        try {
            return userInfoCache.get(userId);
        } catch (ExecutionException e) {
            LOGGER.error("query userInfo error. userId={}", userId, e);
            return null;
        }
    }

}

  • 声明创建的缓存类为一个springbean
  • 在缓存类中创建一个GuavaCache存储器LoadingCache,需要传入泛型.
  • 初始化时创建存储器实例
  • 完成
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容