Java项目实战 - Redis缓存同步

缓存有个问题就是如果数据库表中的数据做了修改,缓存是需要同步的,否则查询的还是老数据,所有涉及增、删、改的操作都需要同步缓存。

我们创建一个rest服务供manager-service层调用。

Redis Service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Service
public class RedisServiceImpl implements RedisService {

@Value("${CONTENT_KEY}")
private String CONTENT_KEY;

@Autowired
private RedisUtils redisUtils;

@Override
public TaotaoResult syncContent(long contentCategoryId) {
try {
redisUtils.hdel(CONTENT_KEY, contentCategoryId + "");
} catch (Exception e) {
// TODO: handle exception
}
return TaotaoResult.ok();
}
}

Redis Controller

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
@RequestMapping("/cache")
public class RedisController {

@Autowired
private RedisService redisService;

@RequestMapping("/content/{contentCategoryId}")
@ResponseBody
public TaotaoResult syncContent(@PathVariable long contentCategoryId) {
TaotaoResult result = redisService.syncContent(contentCategoryId);

return result;
}
}

Content Service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
public TaotaoResult createContent(TbContent tbContent) {
tbContent.setCreated(new Date());
tbContent.setUpdated(new Date());

contentMapper.insert(tbContent);

//添加缓存同步
try {
HttpClientUtil.doGet(REST_BASE_URL + REST_CONTENT_SYNC_URL + tbContent.getCategoryId());
} catch (Exception e) {
e.printStackTrace();
}

return TaotaoResult.ok();
}

Verify

在后台添加一个Content,删除缓存。

唐胡璐 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
分享创造价值,您的支持将鼓励我继续前行!