Redis
Redis是一个key-value存储系统。它支持存储多种value类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。Redis将数据都是缓存在内存中。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
特色:
速度快
持久化
支持多种数据类型
功能丰富【还支持事务、流水线、发布/订阅、消息队列等功能】
高可用及分布式
Ehcache
Ehcache 是设计于提高在数据从RDBMS中取出来的高花费、高延迟而采取的一种缓存方案,主要面向通用缓存,Java EE和轻量级容器,具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,支持REST等特点。
特色:
多种缓存策略
快、简单、轻量、易拓展
具有缓存和缓存管理器的侦听接口
缓存数据有两级:内存和磁盘
支持多缓存管理器实例,以及一个实例的多个缓存区域
提供Hibernate的缓存实现
缓存数据会在虚拟机重启的过程中写入磁盘
memcache
memcache 是一种高性能、分布式对象缓存系统,可以想象成一个大的内存HashTable,即key-value键值缓存。
特色:
多线程支持
高性能
redis与memcached比较:
redis可以用来做存储(storage),而memcached是用来做缓存(cache),memecached一旦关机重启内存数据就丢失了,redis是保存在磁盘,不会丢失。
redis中存储的数据有多种结构,而memcached存储的数据只有一种类型“字符串”。
redis与ehcache比较:
ehcache:直接在jvm虚拟机中缓存,速度快,效率高;但是缓存共享麻烦,集群分布式应用不方便,而且只支持java语言,其他语言不支持。
redis:是通过socket访问到缓存服务,效率比ecache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案,支持绝大部分语言。
建议:
如果是单个应用或者对缓存访问要求很高的应用,用ehcache。
如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。
网友回复