现状:程序端我铺了一层缓存跟数据库A表的数据保持一致,每次直接操作缓存,再将缓存刷到数据库中。现在用户有一个手贱的操作,他直接用数据库客户端工具写SQL语句更新A表的数据,不知道怎么把这些数据实时同步到程序端的缓存中。头痛了。之前想过做个任务定时同步,但是这样还是会存在中间一个时间段缓存的数据库数据不一致的情况。求解。
1,建一个超小的表,就一列就行。比如叫A表
2,把客户主要会操作的表写个触发器,每有更新什么的,在A表插入一条数据。
3,程序有个机制,在几秒内扫描一下A表,发现A表有变动,重新刷新缓存。
这里唯一费点性能的是步骤3,但A表很小,所以这种性能浪费可以忽略。
这个 你要在db中安装 一些表,存储过程。不要自己写缓冲更新,要用 sql推荐的方法实现。就是 缓冲 更新项是 db中表。你可以看看photshop 这个项目
使用 sql cache dependency, 如果数据库中你感兴趣的数据发生变化, 自动通知你的程序, 然后再把相应的缓存项清空
用 sql cache dependency 把缓存清空之后,怎么重新自动获取呢????求解!!