首页 > 编程知识 正文

mybatis关闭一级缓存,mybatis分布式缓存

时间:2023-05-06 12:11:09 阅读:32561 作者:405

mybatis缓存的几个问题1,mybatis一级缓存检测到的错误数据

首先,从数据库中检测到id为1的user,名称为bzdbm,将该user对象重命名为ggdxh,然后再次查询id为1的user,由于存在主缓存,查询的数据的名称为真实名称bzdbm

2、l2缓存配置为可写时,对象需要序列化的原因原文链接: https://blog.csdn.net/yzh _ 1346983557/article/details/84786246

原文作者: yzh_1346983557

MyBatis使用序列化cache序列化缓存提供可读写的缓存类,序列化和反序列化确保从缓存检索数据时得到新的实例。 如果配置为只读缓存,则MyBatis使用Map存储缓存值。 在这种情况下,从缓存中检索的对象是相同的实例。

在MyBatis中配置缓存时,缓存元素cache具有readOnly属性,readOnly属性可以设置为true或false。 只读缓存为所有调用方返回相同的实例。 对象没有序列化,所以速度最快。 可写缓存通过序列化返回缓存对象的副本。 对象是序列化的,因此速度较慢,但得到了新对象,是线程安全的。 默认值为false。 这意味着Mybatis中的l2缓存默认为可写缓存,可写缓存使用序列化。

序列化缓存

*序列化对象,然后进行缓存,具有压缩对象和节约内存的优点

缺点是速度慢(因为需要序列化对象) ) ) ) ) ) ) )。

总结: Mybatis通过序列化来检索对象的新实例,以确保多线程的安全性(比从数据库检索数据更快,因为它是从缓存中检索数据的)。 更具体地说,对象被序列化并存储在缓存中,从缓存中检索数据时,反序列化会提供新的实例。

3、ehcache配置文件ehcache是一种广泛使用的开源Java分布式缓存。 主要面向通用缓存,与mybatis的l2缓存没有太大差别。

要使用,只需在mapper.xml文件中进行以下配置,然后创建xml配置文件

Mapper.xml

cachetype=' org.my batis.caches.ehcache.ehcache cache '/ehcache.XML

? XML版本=' 1.0 '编码=' utf-8 '? ehcache xmlns 3360 xsi=' http://www.w3.org/2001/XML方案实例' xsi 3360 nonamespaceschemalocation=' 3358 ehcachechechema 参数解释如下: user.home用户的主目录user.dir用户的当前工作目录Java.io.tmpdir默认临时文件路径--- diskstorepath=' Java.io. ehcache找不到预定义的缓存时使用。 只能定义一个。 -! -- name:缓存名称。 maxElementsInMemory:缓存最大数量maxElementsOnDisk :硬盘缓存的最大数量。 eternal:对象是否永久有效。 但是,设置后,timeout将不起作用。 overflowToDisk:是否存储在磁盘上? 如果系统故障,timeToIdleSeconds:将设置对象过期之前的空闲时间(以秒为单位)。 仅在eternal=false对象不是永久有效的情况下使用。 在可选属性中,默认值为0,即空闲时间为无限大。 timeToLiveSeconds:设置对象在过期之前可以生存的时间(以秒为单位)。 最大时间在创建时间和失效时间之间。 仅在eternal=false对象不是永久有效的情况下使用,默认值为0 .对象的生存时间无限大。 磁盘持久性:虚拟机重启期间数据whetherthediskstorepersistsbetweenrestartsofthevirtualmachine.thedefaultvalueisfalse.diskspolole 每个Cache都应该有自己的缓冲区。 diskexpirythreadintervalseconds—磁盘故障线程的执行间隔。 默认值为120秒。 memorystoreevictionpolicy :达到maxelementsinmemory限制时,Ehcache将根据指定的策略清理内存。 默认策略为LRU。 可以设置为先进先出(FIFO )或LFU。 clearOnFlush :内存数最大时是否清除。 memoryStoreEvictionPolicy:选项的策略是最近的最小使用、默认策略(LRU )、FIFO )和LFU (最小访问次数)。 FIFO,first in first out,这是大家最清楚,先进先出。 LFU,Less Frequently Used是上例中使用的战略,坦率地说,是迄今为止最少使用的战略。 如上所述,缓存的元素具有hit属性,具有最低hit值的元素将从缓存中清除。 LRU、Least Recently Used和最近使用最多的缓存元素具有时间戳。 如果缓存空间已满,需要腾出位置缓存新元素,现有缓存元素中时间戳距离当前时间最远的元素将从缓存中清除。 - defaultcacheeternal=' false ' maxelementsinmemory=' 10000 ' overflowtodisk=' false ' disk persistent=' false ' timent chename=' cloud _ user ' eternal=' false ' maxelementsinmemory=' 5000 ' overflowtodisk=' false ' disk persistent=' ff

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。