Redis数据缓存

本文介绍了如何使用Redis进行对象类型和列表类型的数据缓存。首先,通过键从Redis中查询对象类型的缓存,如果存在则直接返回,否则从数据库查询并写入Redis。对于列表类型,先尝试获取缓存,如果不存在则从数据库查询所有数据,再写入Redis。这种方法能有效提高数据读取效率。
摘要由CSDN通过智能技术生成

对象类型缓存

对象类型的数据缓存

	String key = CACHE_SHOP_KEY + id;
    // 1.通过key从redis中查询缓存是否存在
    String shopJson = stringRedisTemplate.opsForValue().get(key);
    // 2.判断是否存在
    if (StrUtil.isNotBlank(shopJson)) {
        // 3.存在,直接返回
        Shop shop = JSONUtil.toBean(shopJson, Shop.class);
        return Result.ok(shop);
    }
    // 4.不存在,根据id查询数据库
    Shop shop = getById(id);
    // 5.不存在,返回错误
    if (shop == null) {
        return Result.fail("店铺不能存在!");
    }
    // 6.存在,写入redis
    stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(shop));

列表类型缓存

遇到类似商品类型数据时使用

	String key = CACHE_SHOPTYPE_KEY;
    // 1.从redis中查询商铺类型缓存
	List<String> range = stringRedisTemplate.opsForList().range(key, 0, -1);// 获取所有值
	// 2.判断是否存在
	if (CollUtil.isNotEmpty(range)) {
		List<ShopType> typeList = range.stream().map(item -> JSONUtil.toBean(item, ShopType.class)).collect(Collectors.toList());
		return typeList;
	}
    // 4.不存在,在数据库中查找
    List<ShopType> typeList = query().orderByAsc("sort").list();
    // 6.存在,写入redis
    List<String> resList = typeList.stream().map(item -> JSONUtil.toJsonStr(item)).collect(Collectors.toList());
    stringRedisTemplate.opsForList().rightPushAll(key, resList);

持续更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值