关于缓存,openfire存储到了本地JVM中。本人认为这样并不是很好。以后会讲一篇Redis的缓存。
实际应用中,本人讲openfire诸多缓存内容放置了redis中。这里就看看openfire自己的缓存吧。
Cache接口
类图:
Cache接口继承了Map工具类,它存储相关的对象在内存中独特的键、值队,可快速访问。所有的键和值添加到缓存必须实现Serializable接口。值可能实现缓存的接口,它允许缓存来确定对象的大小要快得多。这些限制允许缓存永远生长大于一个指定的字节数,并可选地分布到一个服务器集群。如果缓存的对象比较大的话,那么这样的对象将内剔除。当一个最大生命周期可以指定所有对象。在这种情况下,对象将被从缓存之后的时间删除,即使他们是经常访问的。这个特性很有用如果对象放入缓存表示数据,应该定期刷新,例如,访问一个数据库的时候。这里所有缓存操作是线程安全的。
基本缓存方法列表:
getMaxCacheSize()/setMaxCacheSize() |
返回以字节缓存的最大大小。如果缓存生命周期大于最大的值,那么最经常使用缓存项目将被删除。如果最大的缓存大小设置为-1,那它没有大小限制。 |
getMaxLifetime()/setMaxLifetime() |
返回最大的毫秒数,任何对象都可以放进缓存。一旦超过指定的毫秒数,对象将自动从缓存消除掉。如果最大的生命周期被设置为-1,那么对象永远不会过期。 |
getCacheSize()/setCacheSize() |
返回缓存的大小字节的内容。返回缓存的大小字节的内容。当这个值只是粗略的接近的时候,实际VM内存使用的缓存可以明显高于这个值报告的时候用这个放这个方法。 |
getCacheHits() |
返回的缓存命中率的数量。一个缓存命中时每次调用这个方法来缓存包含所请求的对象。跟踪缓存命中和未命中让一个衡量高效缓存,命中率越高,效率越高。 |
GetCacheMisses() |
返回的缓存未命中的数量。一个缓存命中时每次调用这个方法来缓存包含所请求的对象。跟踪缓存命中和未命中让一个衡量高效缓存,命中率越高,效率越高。 |
DefaultCache
它是Cache接口的一个实现,其中保持了两个链表(LinkedList)lastAcc