我试图将缓存引入现有的服务器应用程序,因为数据库开始变得过载。有许多类似数据库查询的高速缓存管理
与许多服务器应用程序一样,我们有数据层的概念。这个数据层有许多不同的方法返回域模型对象。例如,我们已经用类似方法雇员数据访问对象:
- findEmployeesForAccount(长的accountId)
- findEmployeesWorkingInDepartment(长帐户ID,长DepartmentID的)
- findEmployeesBySearch(长帐户ID,字符串搜索)
每种方法查询数据库并返回Employee域对象列表。
显然,我们想尽可能地尝试缓存来限制查询数据库的次数,但是我们将如何去做呢?
我看到一对夫妇可能的解决方案:
1)我们为每一个方法调用的缓存。例如。对于findEmployeesForAccount,我们将添加一个具有关键account-employees-accountId的条目。对于findEmployeesWorkingInDepartment,我们可以添加一个关键字department-employees-accountId-departmentId等等。我看到的问题是,当我们向系统中添加新员工时,我们需要确保将其添加到每个适当的列表中,这似乎很难维护并且易于出错。
2)我们为findEmployeesForAccount(包含更多连接和/或查询,因为需要更多信息)创建更通用的查询。对于其他方法,我们使用findEmployeesForAccount并从列表中删除不符合指定条件的条目。
我是新来的缓存,所以我想知道人们用什么策略来处理这种情况?任何建议和/或资源在这种类型的东西将不胜感激。