函数式接口在缓存中的应用

我们在平常做的最多的就是数据库数据的查询,但是在很多情况下,数据库的一些数据信息的固定定时更新的。这样我们就可以将这部分数据放入缓存,加快数据的访问速度。同时我们可以设置数据的过期时间来定时查询数据库,然后将数据缓存的缓存中间件。
这时候我们可以写一个工具类,来处理不同的数据库查询方法。

Supplier<List<testInfoPO>> fun = () -> aaaService.selectaaaInfo(params);

List<testInfoPO> XXXPOList = redisService.getRedisContent(fun, key, 
     new TypeToken<List<testInfoPO>>(){}.getType());
public <T> T getRedisContent(Supplier<T> func, String keys, Type type){
        // 先尝试从缓存获取信息
        String result = redisCache.get(keys, String.class);
        if (StringUtils.isNotBlank(result)) {
                T redis = GsonUtils.fromJson(result,type);
                if (redis != null){
                    logger.info("get data from redis: {}", GsonUtils.toJsonString(redis).toString());
                    return redis;
                }
        }
        T results = func.get();

        redisCache.put(keys, GsonUtils.toJsonString(results), CacheSeconds);
        return results;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值