【Redis基础】Redis在项目中实战

redis搭建,集群搭建,多属于运维知识,基本了解就可以。但是在项目如何让redis发挥它的特长就属于我们需要掌握和探索的。接下来讲解一下在项目中如何使用redis来做缓存的。

 

适用场景

什么样的情况才会用到缓存呢??一个项目中有些数据长时间不会发生变动,但是用户又访问特别频繁。我觉得这样的情况会用到缓存。从我们项目的使用情况,我总结出来了这一点。

我们项目的首页上会有一些大的广告位,而且大家都知道用户最先访问的都会是首页,所以访问特别频繁,广告更换也不会很频繁,所以我们觉得用在这里挺合适的。

 

如何让数据从缓存中取到

第一,我们首先会判断缓存中是否有该数据,如果没有就从数据库中获取,返回给前台的同时存入到缓存一份儿。如果缓存中有数据,则直接返回缓存中的数据。(只截取一段儿代码,主要给大家讲解思路)

@Override
public List<TbContent> getContentList(Long cid) {
	// 查询数据时,先从缓存查询,有就直接返回
	try {
		String json = jedisClient.hget(REDIS_CONTENT_KEY, cid + "");
		if (!StringUtils.isEmpty(json)) {
			// 把json数据转换成List
			List<TbContent> jsonToList = JsonUtils.jsonToList(json,
					TbContent.class);
			return jsonToList;
		}
	} catch (Exception e1) {
		e1.printStackTrace();
	}
	// 如果没有则查询数据库
	// 根据cid查询内容列表
	TbContentExample example = new TbContentExample();
	Criteria criteria = example.createCriteria();
	criteria.andCategoryIdEqualTo(cid);
	// 执行查询
	List<TbContent> list = contentMapper.selectByExampleWithBLOBs(example);

	// 查询之后再放入缓存
	// 有关content的保存在一个hash中,key为REDIS_CONTENT_KEY
	// 其中每项的item为contentCid,value为list(list要转换成json)
	try {
		jedisClient.hset(REDIS_CONTENT_KEY, cid + "",
				JsonUtils.objectToJson(list));
	} catch (Exception e) {
		e.printStackTrace();
	}
	return list;
}

如何让缓存中的数据与数据库中的保持同步

刚开始接触的时候,我有一个疑问,不知道大家有没有,就是在项目中如果使用redis做缓存的话,如果数据有变化的时候怎么让redis中的数据与数据库中的保持同步。应该会有很多种方法,我们项目中用的是下面这种方法。

 

在后台对大广告位的内容进行添加或修改或删除的同时删除缓存中大广告位的信息。

/**
     * 添加内容
     * @param content
     * @return 
     */
    @RequestMapping("/save")
    @ResponseBody
    public TaotaoResult insertContent(TbContent content){
        TaotaoResult result = null;
        try {
	//添加大广告位信息
            result = contentService.insertContent(content);
            
            //删除缓存中的信息
            jedisClient.hde(REST_BASE_URL+REST_CONTENT_SYNC_URL+content.getCategoryId());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

redis的功能很强大,目前只接触到redis做缓存的功能,其它还在探索中。




  • 18
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值