Redis在项目中的具体运用

上篇文章已经知道了redis与spring的集成,下面就是redis在项目中的具体运用了


未添加缓存之前,我们的后台系统代码都是写好的。根据前台需要调用后台系统到数据库中查询数据返回给前台进行展示。那么现在我们把缓存加在哪里呢?

1)我们已经查询在后台的service中查询出了结果

2)我们可把这个结果放到缓存:设置缓存的名称,结果,缓存时间

3)再次执行该查询时,我们会先到缓存命中我们想要的结果,如果命中说明缓存中有我们想要的数据就从缓存中直接取数据,如果没有命中就去数据库中查询返回给controller。



具体实现如下:

import com.fasterxml.jackson.databind.ObjectMapper;

@Service
public class 类名extends BaseService<pojo>{
   
    @Autowired
    private RedisService redisService;
    
    private static final ObjectMapper MAPPER=new ObjectMapper();
    
//  从缓存中命中,key命名规则:项目名_模块名_业务名
    private static final String REDIS_KEY="TAOTAO_MANAGER_ITEMCAT_WEB_ALL";
    private static final Integer REDIS_TIME=60*60*24*30;
    
   
    public Result 方法名(){

        try {
            String cacheDate=this.redisService.get(REDIS_KEY);
            if (StringUtils.isNotEmpty(cacheDate)) {
//                  命中,因为缓存中存放的是string类型数据,需要反序列化为对象后返回
                Result result = MAPPER.readValue(cacheDate, Result.class);
                 return result;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
       
 //     执行查询的具体结果,查询出结果后放到result对象中
        
  
        try {
//            将结果写入到缓存,缓存一个月时间,
//           因为查询出来的结果是一个对象,而缓存中存储格式为string,所以需要序列化为对象
            this.redisService.set(REDIS_KEY, MAPPER.writeValueAsString(result),REDIS_TIME);
        } catch (Exception e) {
            e.printStackTrace();
        }
         return  result;
    }
    
}



添加缓存的原则:不能影响正常的业务逻辑执行

一定要把缓存逻辑放到try--catch逻辑中进行捕获。因为如果不进行捕获的话,假如缓存在执行get方法时出现了异常,程序就直接抛出异常直接返回而不会继续往下执行。

查看上述代码执行后的缓存结果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值