Redis——缓存

1、什么是缓存?

        打个比方,图书馆是大量的书籍(数据源)的集合,当你想找一本书时,可能需要在书架上花费一些时间寻找。如果图书馆在常用书的旁边设立了一个“快速借阅区”(缓存区),那么经常需要借阅的书籍(如畅销书或教材)就会被放在这里,以便读者能够更快地找到它们。这样,读者就不需要每次都去主书架(原始数据源)上寻找这些书了,提高了效率。

2、缓存的作用

通俗的讲就是:速度快,好用!但是每个事物都是双面性的。

好作用副作用

1. 降低后端负载 :无需每次访问后端数据库

1. 数据一致性成本提高 :可能存在数据库数据改变,但是缓存区数据没有改变,导致数据不一致

2. 提高读写效率,降低反  应时间                                                                

    代码维护和运维成本提高

3、添加redis缓存

要使用hutool提供的JSONUtil,需要引入依赖:

		<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>5.7.17</version>
		</dependency>

 对于缓存对象集合,可以使用JSON.toJsonStr(String,String)手动把集合转成JSON字符串,存储在redis中,取出数据的时候使用JSON.toList(String,Class<T>),toList返回值为List<Class<T>>。

import cn.hutool.json.JSONUtil;
import com.Redis_stu.entity.Result;
import com.Redis_stu.entity.ShopType; //实体类
import com.Redis_stu.mapper.queryMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class queryShopTypeService {

    @Autowired
    private queryMapper mapper;

    @Autowired
    private StringRedisTemplate redisTemplate;

    public Result query(){
        //查询缓存
        String jsons = redisTemplate.opsForValue().get("shopTypes");
        //判断是否命中缓存
          //***命中
        if(jsons!=null){
            //缓存的数据类型为对象
            //ShopType shopTypes = JSONUtil.toBean(jsons,shopTypes.class);
            //缓存的数据类型为List<ShopTpye>
            List<ShopType> shopTypes = JSONUtil.toList(jsons, ShopType.class);
            return Result.success(shopTypes);
        }
          //***没命中
            //数据库查询
        List<ShopType> ls = mapper.query();
        String jsonList =  JSONUtil.toJsonStr(ls);
            //将数据加入缓存
        redisTemplate.opsForValue().set("shopTypes",jsonList);
        return Result.success(ls);
    }
}

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值