redis 如何保证数据同步(数据变化时)
思路
1.新增、删除和修改都先对数据库进行操作,这时数据库的数据将域缓存中数据不同。
2.数据库进行变动后,返回结果,根据返回的结果判断数据库操作是否成功。
3.如果数据库操作成功,取出数据库中的数据,放入缓存中的指定键值对中。
4.否则返回缓存中的数据,显示到页面上。
测试
删除操作
//删除数据库数据,并且同步到缓存@RequestMapping("DeleteData/{id}")public List<Article> DeleteData(@PathVariable("id") int id) {//1.需要先删除数据库中的文件int dta = articleService.deleteData(id);//2.如果删除成功,则取出数据库数据放进缓存中,放回缓存中的新数据if (dta > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果删除不成功,则直接返回缓存中的数据return (List<Article>) redisTemplate.opsForValue().get("articleData");}
新增操作
//新增数据,并同步到缓存@RequestMapping("interData")public List<Article> interData() {//1.新增数据到数据库int i = articleService.interData();//2.如果成功,则将其放入if (i > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果不成功,就返回缓存的return (List<Article>) redisTemplate.opsForValue().get("articleData");}
修改操作
//修改数据,并同步到缓存@RequestMapping("updateData/{id}")public List<Article> updateData(@PathVariable("id")int id) {//1.新增数据到数据库int i = articleService.updateData(id);//2.如果成功,则将其放入if (i > 0) {List<Article> articles = articleService.getArticles();redisTemplate.opsForValue().set("articleData", articles);}//3.如果不成功,就返回缓存的return (List<Article>) redisTemplate.opsForValue().get("articleData");}