我对客户端服务器 Java 桌面应用程序的缓存解决方案感兴趣,既可以加速本地查询,又可以限制网络流量。
目前,每个客户端每次必须向用户显示列表或操作数据时都会反复查询服务器,即使在同一个方法中,getAllUsers() 或 findAll() 之类的方法也很常见。
这意味着网络对这种类型的查询非常拥挤。我已经看到了这个有趣的线程Lightweight Java Object cache API但是我认为这些库的工作方式是客户端在使用服务器更新其缓存之前在本地保留查询缓存一段时间。
然而,这些 API 中的大多数似乎只在基于浏览器的应用程序中工作,其中每个客户端都向服务器的数据库请求数据。相反,我处于客户端服务器摆动应用程序的情况。
由于我的数据库结果之间存在复杂的关系,因此我需要客户端保留查询缓存,但由于另一个客户端的更新,一旦服务器数据库更新,它们的缓存就会失效,因此 TTL 甚至不是必需的,因为如果服务器数据库永远不会更改客户端的缓存很可能永远不会过期。
桌面应用程序是否有某种数据库缓存和同步?你能告诉我哪些缓存库(Guava、cache4j、whirlyCache、LRUMap、EHCache)也提供了这个特性或者这种类型的缓存是如何被调用的?