如何理解Mybatis二级缓存配置中的readOnly?

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实例都不是同一个啊

阅读 3.7k
1 个回答
新手上路,请多包涵

这个可能和你的缓存有关系,Mybatis默认的缓存类是PerpetualCache类实现的,实际上就是用HashMap来作为缓存,看你配置的,应该是使用redis做缓存,redis缓存的对象是通过反序列化得到的,所以取出来的对象和之前不同

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏