欢迎光临散文网 会员登陆 & 注册

黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式

2023-05-03 23:50 作者:欢汝之诺丶  | 我要投稿

P37-基于Redis缓存的商户类型列表查询


@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {

    @Resource
    StringRedisTemplate stringRedisTemplate;
    @Override
    public Result queryTypeList() {
    String key = RedisConstants.SHOPTYPE_LIST_KEY;
    List<String> listCache = stringRedisTemplate.opsForList().range(key, 0, -1);
    // System.out.println(listCache);
    if(listCache != null && !listCache.isEmpty()) {
        // redis缓存中存在
        // list<string> -> list<shoptype>
        List<ShopType> shopTypes = listCache.stream()
                .map(str -> (ShopType)JSONUtil.toBean(str, ShopType.class, true))
                .sorted(Comparator.comparingInt(ShopType::getSort))
                .collect(Collectors.toList());
        return Result.ok(shopTypes);
    }
    // redis中不存在,查询数据库
    List<ShopType> list = query().orderByAsc("sort").list();
    if(list == null) {
        // 数据库中不存在
        return Result.fail("商户类型列表不存在!!");
    }
    // 数据库中存在,放入redis缓存并返回
    // List<ShopType>转为List<String>存入redis
    List<String> strList = list.stream().map(JSONUtil::toJsonStr).collect(Collectors.toList());
    stringRedisTemplate.opsForList().leftPushAll(key,strList);
    return Result.ok(list);
}
}



黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式的评论 (共 条)

分享到微博请遵守国家法律