在Java使用Canal,当数据库变化时,EntryHandler的实现类去通知Caffeine和Redis更新,我的代码debug的时候就可以实时更新数据库变化,但是不debug了,实现类中写的逻辑就跟失效了一样,Caffeine和Redis都不会做出改变
@CanalTable("tb_item")
@Component
public class ItemHandler implements EntryHandler<Item> {
@Autowired
private RedisHandler redisHandler;
@Autowired
private Cache<Long, Item> itemCache;
@Override
public void insert(Item item) {
//写数据到JVm进程缓存
itemCache.put(item.getId(), item);
//写数据到Redis
redisHandler.saveItem(item);
System.out.println("------------------------------------------------------------INSERT");
}
@Override
public void update(Item before, Item after) {
//写数据到JVm进程缓存
itemCache.put(after.getId(), after);
//写数据到Redis
redisHandler.saveItem(after);
System.out.println("------------------------------------------------------------UPDATE");
}
@Override
public void delete(Item item) {
//写数据到JVm进程缓存
itemCache.invalidate(item.getId());
//写数据到Redis
redisHandler.deleteItem(item.getId());
System.out.println("------------------------------------------------------------DELETE");
}
}