HashMap 、ehcache 与 redis 在程序缓存上的用处和区别

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做三级缓存

主要:备份缓存数据,防止系统宕机等突发情况,用于数据快速恢复
优点:可以异地备份,一台主机挂了,其他机子还能服务。

经过初步设计和编码验证 发现完全可行,效率还不错
目前开源代码还处于研发阶段,后期会上传到马云 请大家多提意见

你可能感兴趣的:(编程,java,设计)