ehcache 当做map用
ehcache 比 redis 要快
ehcache 与java 自带map的速度差不多 ,没有比较的意义
通常我们 只要用map,或者类对象的属性即可。
但有的时候我们不得不考虑系统宕机造成的影响。
所以 我们会用可以持久化的ehcache 代替map和对象属性
如果我们的程序比较大,用到了分布式,这时候最好还要引入redis 做缓存的异地备份,甚至可以利用redis的灵活配置,做分布式缓存。
redis 的作用和优势 是批量操作
redis 如果用pipeline,进行批量写入操作,上万条数据普通计算机也就几百毫秒,写入是非常快的。
但是。。。如果不用pipeline 方式, 每秒最多进行500次set操作(加上redis连接和close 操作)
顺便说明一下
redis 只是方便实现数据容灾备份,对于数据分区备份不是特别擅长。但已经足够用了。只有海量数据才会用到spark 进行分布式数据备份,而显然大部分程序都不可能需要那么大的缓存。即使需要也只是用于第四层缓存。
缓存方案
用map和对象属性做一级缓存
如果不用map和对象属性,直接用ehcache 做一级也没有问题的。
对象数据是可以通过序列化组件直接序列化到磁盘的,也非常快的。
用ehcache 做一级或者二级缓存
主要功能:及时响应用户请求,读写缓存数据
优点:相比于map,不用手写就可以把缓存数据序列化到磁盘文件
用redis做三级缓存
主要:备份缓存数据,防止系统宕机等突发情况,用于数据快速恢复
优点:可以异地备份,一台主机挂了,其他机子还能服务。
经过初步设计和编码验证 发现完全可行,效率还不错
目前开源代码还处于研发阶段,后期会上传到马云 请大家多提意见