redis集群--6.缓存测试与缓存同步

1       添加缓存

1.1  功能分析

查询内容列表时添加缓存。

1、查询数据库之前先查询缓存。

2、查询到结果,直接响应结果。

3、查询不到,缓存中没有需要查询数据库。

4、把查询结果添加到缓存中。

5、返回结果。

 

向redis中添加缓存:

Key:cid

Value:内容列表。需要把java对象转换成json。

 

使用hash对key进行归类。

HASH_KEY:HASH

           |--KEY:VALUE

           |--KEY:VALUE

           |--KEY:VALUE

           |--KEY:VALUE

 

 

注意:添加缓存不能影响正常业务逻辑。

 

1.2  代码实现

 

public List<TbContent> getContentListByCid(long cid) {
       //查询缓存
       try {
           //如果缓存中有直接响应结果
           String json = jedisClient.hget(CONTENT_LIST, cid + "");
           if (StringUtils.isNotBlank(json)){
               List<TbContent> list= JsonUtils.jsonToList(json, TbContent.class);
               return list;
           }
       } catch (Exceptione) {
           e.printStackTrace();
       }
       //如果没有查询数据库
       TbContentExample example = new TbContentExample();
       Criteria criteria =example.createCriteria();
       //设置查询条件
       criteria.andCategoryIdEqualTo(cid);
       //执行查询
       List<TbContent> list = contentMapper.selectByExampleWithBLOBs(example);
       //把结果添加到缓存
       try {
           jedisClient.hset(CONTENT_LIST, cid + "", JsonUtils.objectToJson(list));
       } catch (Exceptione) {
           e.printStackTrace();
       }
       return list;
}

2       缓存同步

2.1  本质

对内容信息做增删改操作后只需要把对应缓存删除即可。

 

2.2  代码实现

可以根据cid删除。

public E3Result addContent(TbContent content) {
   Date nowDate = new Date();
   //将内容数据插入到内容表
   content.setCreated(nowDate);
   content.setUpdated(nowDate);
   //插入到数据库
   contentMapper.insert(content);
       //缓存同步,删除缓存中对应的数据。
       jedisClient.hdel(CONTENT_LIST, content.getCategoryId().toString());
   return E3Result.ok();
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值