redis如何创建缓存
redis创建缓存的示例:
@Autowired
private JedisClient jedisClient;
public ListgetContentListByCid(long cid) {
//查询缓存
try {
//如果缓存中有直接响应结果
String json = jedisClient.hget("CONTENT_LIST", cid + "");
if (StringUtils.isNotBlank(json)) {
Listlist = JsonUtils.jsonToList(json, TbContent.class);
return list;
}
} catch (Exception e) {
e.printStackTrace();
}
//如果没有查询数据库
TbContentExample example = new TbContentExample();
Criteria criteria = example.createCriteria();
//设置查询条件
criteria.andCategoryIdEqualTo(cid);
//执行查询
Listlist = contentMapper.selectByExampleWithBLOBs(example);
//把结果添加到缓存
try {
jedisClient.hset("CONTENT_LIST", cid + "", JsonUtils.objectToJson(list));
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
缓存同步
当做增删改时需要更新缓存
@Override
public E3Result addContent(TbContent content) {
//插入到数据库
contentMapper.insert(content);
//当增删改操作时缓存同步,删除缓存中对应的数据,下次查询时从数据库中查
jedisClient.hdel(CONTENT_LIST, content.getCategoryId().toString());
return E3Result.ok();
}
public TbItem getItemById(long itemId) {
//查询缓存
try {
String json = jedisClient.get("REDIS_ITEM_PRE" + ":" + itemId + ":BASE");
if(StringUtils.isNotBlank(json)) {
TbItem tbItem = JsonUtils.jsonToPojo(json, TbItem.class);
return tbItem;
}
} catch (Exception e) {
e.printStackTrace();
}
//缓存中没有,查询数据库
TbItemExample example = new TbItemExample();
Criteria criteria = example.createCriteria();
//设置查询条件
criteria.andIdEqualTo(itemId);
//执行查询
Listlist = itemMapper.selectByExample(example);
if (list != null && list.size() > 0) {
//把结果添加到缓存
try {
jedisClient.set("REDIS_ITEM_PRE" + ":" + itemId + ":BASE", JsonUtils.objectToJson(list.get(0)));
//设置过期时间
jedisClient.expire("REDIS_ITEM_PRE" + ":" + itemId + ":BASE",3600);
} catch (Exception e) {
e.printStackTrace();
}
return list.get(0);
}
return null;
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341