redis的清除缓存问题

假如我不清除数据话,原来价格是20元,我在后台进行更改好,它的价格是没变的。
数据库是改变了的,但是移动端的数据却没改变过来。

因为我们的逻辑是这样的如果redis中存在菜品数据,则直接返回,没有才查询数据库。
而我们的redis中已经缓存了之前的菜品信息,它并不能监听到数据已经发生了改变,就直接返回了。


所以我们在进行增删改的时候,要进行清理缓存的逻辑。




有两种方法清除缓存,一个是清除所有的菜品缓存,一个是根据指定的菜品清除缓存。

第一种清除所有的菜品缓存
拿到所有dish_开头的键

删除键

    //清除所有的菜品缓存
        Set dish = redisTemplate.keys("dish_");
        redisTemplate.delete(dish);

第二种清理某个分类下面的菜品缓存数据

//清除某个分类下面的菜品缓存数据
        String key="dish_"+dishDto.getCategoryId()+"_1";
        redisTemplate.delete(key);
posted @ 2022-07-01 20:28  长情c  阅读(646)  评论(0)    收藏  举报