关于OsCache的二次开发

各位大虾,我遇到难题了。现在手里的项目需要用OsCache对数据进行缓存,并且用LRU淘汰算法,我需要得到被淘汰的数据以便更新数据库。着了OsCache的API,好像没有这个功能。哪位能指点一下?

你可以继承com.opensymphony.oscache.base.algorithm.LRUCache以实现你自己的。当然最好是自己继承com.opensymphony.oscache.base.algorithm.AbstractConcurrentReadCache,然后采用委派的方式将算法交给LRUCache,自己实现扩展的部分。另外,可以实现com.opensymphony.oscache.base.events.CacheEventListener来监听cache的变化。
所有的实现类都可以在oscache.properties中注册

OsCache就是对数据进行缓存的,和你的算法不能混在一起。说说你的“LRU淘汰算法”,我们也在用OsCache做缓存,这方面的知识也许可以帮助你

自己参照LRUCache实现吧,在它的源代码中加入一些log信息或者debug一下就知道逻辑了。但是这里面用到了线程,所以加数据库操作可能影响性能。考虑用异步方式更新数据库。