【缓存】什么是缓存

-----------------------

专题【缓存】相关文章


-----------------------

作者:LiXiang

链接:http://www.leexiang.com/cache-algorithm


  缓存是“存贮数据(使用频繁的数据)的临时地方“,因为取原始数据的代价太大了,而通过缓存可以取得快一些。

缓存可以认为是数据的池,这些数据是从数据库里的真实数据复制出来的,并且为了能别取回,被标上了标签(键 ID)。


       有以下几个术语需要了解:

命中

       当客户发起一个请求(我们说他想要查看一个产品信息),应用接受这个请求,并且如果是在第一次检查缓存的时候,需要去数据库读取产品信息。

       如果在缓存中,一个条目通过一个标记被找到了,这个条目就会被使用,称其缓存命中。所以,命中率也就不难理解了。

Cache Miss

       但是这里需要注意两点:

1.如果还有缓存的空间,那么,没有命中的对象会被存储到缓存中来。

2.如果缓存满了,而又没有命中缓存,那么就会按照某一种策略,把缓存中的旧对象踢出,而把新的对象加入缓存池。而这些策略统称为替代策略(缓存算法),这些策略会决定到底应该提出哪些对象。

存储成本

       当没有命中时,会从数据库取出数据,然后放入缓存。而把这个数据放入缓存所需要的时间和空间,就是存储成本。

索引成本

       和存储成本相仿。

失效

       当存在缓存中的数据需要更新时,就意味着缓存中的这个数据失效了。

替代策略

       当缓存没有命中时,并且缓存容量已经满了,就需要在缓存中踢出一个老的条目,加入一条新的条目,而到底应该踢出什么条目,就由替代策略决定。


转载于:https://www.cnblogs.com/youngerchina/p/5624445.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis缓存是将查询结果存储在内存中,以便下次查询相同的语句时可以直接从缓存中获取数据,而不需要再次查询数据库。MyBatis提供了两级缓存:一级缓存和二级缓存。 一级缓存是SqlSession级别的缓存,它默认是开启的,可以减少数据库的访问次数,提高查询效率。一级缓存的作用范围是在同一个SqlSession中,当执行相同的查询语句时,MyBatis会先从一级缓存中查找数据,如果找到了就直接返回,如果没有找到则去数据库查询,并将查询结果放入一级缓存中。 二级缓存是Mapper级别的缓存,它可以跨SqlSession共享数据。当多个SqlSession执行相同的查询语句时,如果开启了二级缓存,MyBatis会先从二级缓存中查找数据,如果找到了就直接返回,如果没有找到则去数据库查询,并将查询结果放入二级缓存中。二级缓存的作用范围是在同一个Mapper中,不同的Mapper之间的缓存是相互独立的。 要使用MyBatis的缓存功能,需要在配置文件中进行相应的配置。可以选择集成第三方的缓存组件,如EhCache、Memcache等,也可以使用MyBatis自带的缓存机制。在配置文件中可以设置缓存的刷新时间间隔、缓存的失效条件等。 【引用1】中提到了MyBatis可以集成第三方的缓存组件,如EhCache,可以按照一定的步骤进行集成。 【引用2】中提到了二级缓存的刷新时间间隔,如果没有设置刷新时间间隔,就代表不刷新缓存,只要内存足够大,就会一直向二级缓存缓存数据,除非执行了增删改操作。 【引用3】中提到了二级缓存的失效条件,只要两次查询之间出现了增、删、改操作,二级缓存就会失效。 【引用4】中提到了一级缓存中的数据在SqlSession对象关闭或提交之后才会被写入到二级缓存中,此时二级缓存才可用。 【引用7】中提到了默认情况下,二级缓存机制是开

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值