我想知道更多关于缓存在playorm中是如何工作的。任何指针都会很棒。另外: 1.如果有任何可用的性能数据来验证Playorm中的缓存。2.是否需要配置/设置?
发布于 2012-11-09 21:33:23
playorm中的缓存很像hibernate中的缓存。实际上有两个缓存在运行,这两个缓存可以称为写缓存和读缓存。
写缓存就是像你做put(对象实体),put(对象实体)等等一样,它在一个叫做NoSqlWriteCacheImpl的类中缓存这些put。当您调用flush时,此缓存将被清空并清除。如果不刷新缓存,则无法清除该缓存。调用clear不会清除这个缓存,只有调用flush才会,所以如果你不想写什么,就不要做put。此缓存是按NoSqlEntityManager计算的。
则读缓存位于名为NoSqlReadCacheImpl的类中。这个缓存就像hibernate的一级缓存,并且是按NoSqlEntityManager的,就像hibernate。当你读入内容时,它会经过这一层并被缓存,当你再次读入该内容时,它会从缓存中读取,而不是进入nosql数据库。一个很好的例子是,你得到一个t恤,然后得到它的用户(比如bob),然后你得到另一个对象,得到它的用户,恰好是Bob....this,这会导致缓存命中,并且在他们查询东西时发生的频率比人们预期的要高。注意:在运行任何NoSqlQuery时都完全避免了NoSqlReadCache!它仅用于find(Class c,List key)和find(Class c,Object key)方法。
https://stackoverflow.com/questions/13303665
复制相似问题