关于java缓存的一些东西

什么是缓存

下面是百度百度的解释
关于java缓存的一些东西
相信大家缓存在实际工作中也是常见使用的

相信大家平时听的最为普遍的说法大概是:
在增删改查中,数据库查询占据了数据库操作的80%以上,非常频繁的磁盘I/O读取操作,会导致数据库性能极度低下。而缓存是能够帮我们大大提高查询的性能

目前我们大体都知道缓存的实现可分为两种:1.内存缓存 2.文件缓存
对于java使用来说,我个人观点认为可分为 jvm缓存,nosql缓存

jvm缓存

用hashMap来实现(当然,我们也是能够按照这种方式来进行自定义缓存)
ehcache,oscache,
ehcache
对于session来说,其实现也是可用hashmap实现;这是我之前在一个视频中看到的,但我去找了下源码,百度了下,不敢保证其准确性
参照:mybatis的一二级缓存(可以去看mybatis的源码);
我大概说一下一级缓存机制:MyBatis使用SqlSession对象表示一次数据库的会话,那么对于会话级别的一级缓存也应该是在SqlSession中控制的。而SqlSession的执行是由Executor接口的实现BaseExecutor对象负责,BaseExecutor对象中有一个Cache接口的实现类PerpetualCache,通过查看源码,可看到有HashMap的cache对象
关于java缓存的一些东西
关于java缓存的一些东西
关于java缓存的一些东西
mybatis一级缓存机制详细请看https://blog.csdn.net/luanlouis/article/details/41280959
mybatis二级缓存机制详细请看https://blog.csdn.net/luanlouis/article/details/41408341

nosql缓存

Redis MongoDb HBase Memcached
redis应该算得上比较常见吧。
redis是一个key-value存储系统,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。当然redis也可用作哨兵模式,分布式集群;这里我推荐大家一个视频关于redis高级的视频,里面讲的很好;
视频地址

参考文档1
参考文档2

当然我这里介绍的不是很全,但是大致给了一个方向,而这个方向是需要自己去琢磨去看源码才能学到东西的。