在用缓存中,用一种场景是,缓存与数据库数据同步被控制,应用取缓存中的数据,与数据库脱离,在这种情况下,需要考虑以下几个问题:
1,缓存存取
2,缓存更新
3,缓存数据结构,
这些问题无不涉及到一个映射问题,即将数据库中的数据映射到缓存中来,如何写代码倒不是问题,现在问题是需要写一个可以根据用户的配置来实现代码的自动完成功能,这样,后面,只需要通过配置即可生成需要的代码。
那么这个功能如何实现,需要考虑以下几个问题:
缓存设计模式:
一、符合需求的缓存记录设计结构:
表标识+ID标识:业务主键
业务主键:对象
二、每块缓存记录都应该可以实现增删查替换方法:
get,通过主键获取
put,向缓存中放入或替换原来记录
delete,通过主键去删除记录
三、每块记录都有其控制表(除自身)
数据库实体中的增删改,要对缓存进行更新。
即有些表在缓存中没有对应,但它可以控制其他模块。
也要进行考虑。
每个控制表会控制一个表,即它本身。
每个控制表可能会控制其他很多表,即所控不一定是一个。
如果是控制表,则一定有其所控表。
根据这种控制关系,建立多个更新 dao
比如一个表1没有对应缓存模块,但它控制一个表2
则1改变某个字段,则会要更新2.(这里仅限改和删除)。
控制关系
四、提供通过表ID来实现更新的方法
可以只提供一种,即通过ID来获取记录,并放入缓存,如果没有,则删除缓存中记录,如果有,则替换
五、每个模块注册一个唯一模块号,模块号与表标识唯一对应。
尽量保证所有的功能被最小粒度化,以便业务方法来重组。
如果有人看到,请探讨一下这个实现有无价值。