Mybatis二级缓存配置中的readOnly如何理解?
<cache type="org.mybatis.caches.redis.RedisCache" eviction="LRU" flushInterval="300000" size="128" readOnly="true" />
网上说法是:readOnly(只读)属性可以被设置为true或false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了很重要的性能优势。可读写的缓存会返回缓存对象的拷贝(通过发序列化)。这会慢一些,但是安全,因此默认是false。
“缓存对象的相同实例”是指java实例吗?在redis做二级缓存的情况下我试了一下readOnly="true",每次返回的java实例都不是同一个啊
这个可能和你的缓存有关系,Mybatis默认的缓存类是PerpetualCache类实现的,实际上就是用HashMap来作为缓存,看你配置的,应该是使用redis做缓存,redis缓存的对象是通过反序列化得到的,所以取出来的对象和之前不同