使用google的guavaCache来做二级缓存

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

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

    private static LoadingCache userInfoCache;
    @Autowired
    private IUserService userService;
    
    @PostConstruct
    public void init() {
    
        userInfoCache = CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).build(new CacheLoader() {
            @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,需要传入泛型.
  • 初始化时创建存储器实例
  • 完成

你可能感兴趣的:(使用google的guavaCache来做二级缓存)