Caching JCS-从数据库动态更新缓存

Caching JCS-从数据库动态更新缓存,caching,synchronization,refresh,sync,jcs,Caching,Synchronization,Refresh,Sync,Jcs,我维护一个应用程序,它利用JCS在JVM中保存缓存(JVM1)。当JVM启动/重新启动时,这些数据将首次从数据库加载 但是,将从不同的JVM(JVM2)访问数据库,这将有助于向数据库添加数据 为了确保将这些额外/新添加的记录加载到缓存中,我们需要为数据库中的每个添加重新启动JVM1 有没有办法在JVM1中定期(而不是频繁的db轮询)刷新/加载缓存(仅针对新添加的记录) 谢谢, Jaya Krishna你能不能让JVM1先检查内存缓存,然后,如果该项在内存缓存中不存在,检查数据库缓存 但是,如果您

我维护一个应用程序,它利用JCS在JVM中保存缓存(JVM1)。当JVM启动/重新启动时,这些数据将首次从数据库加载

但是,将从不同的JVM(JVM2)访问数据库,这将有助于向数据库添加数据

为了确保将这些额外/新添加的记录加载到缓存中,我们需要为数据库中的每个添加重新启动JVM1

有没有办法在JVM1中定期(而不是频繁的db轮询)刷新/加载缓存(仅针对新添加的记录)

谢谢,
Jaya Krishna

你能不能让JVM1先检查内存缓存,然后,如果该项在内存缓存中不存在,检查数据库缓存

但是,如果您需要列出现有的某些类型的所有项目,并且不想访问数据库。然后,为了让JVM1知道数据库中有一个新条目,我假设1)JVM2必须向JVM1发送一条网络消息,告诉它数据库中有新条目。或者2)可能有一个数据库触发器,在插入新数据时触发,并向JVM1发送网络消息。(但让数据库向应用服务器发送网络消息感觉相当奇怪。)-我认为这些方法看起来相当复杂

您是否考虑过某种新的条目ID表,它记录最近插入数据库的条目的ID?它可以由数据库触发器更新,也可以由JVM1和JVM2在写入数据库时更新。然后JVM1可能只需要每秒轮询一次这个表,以获得新ID的列表,然后它就可以从数据库中加载新项


最后,您考虑过分布式缓存吗?这样JVM1和JVM2共享同一个缓存,JVM1和JVM2在将项目插入数据库时会将项目写入该缓存。(这种方法有点类似于在JVM1和JVM2之间发送网络消息,但分布式缓存系统会自行发送消息,因此您无需编写任何新代码)

谢谢您的回答。事实上,我查看了触发器部分,我们只想做的是不应该有任何数据库交互,因为JVM2对数据库的点击次数没有任何控制,因为JVM1上的UI事务(db更新)的数量也是如此。但是,我们尝试了一种稍微不同的方法,创建了一个Java存储过程和触发器,这样这个Java存储过程将控制JVM2上的缓存(添加/删除条目)。