Tair Redis Memcache Ehcache
    是否开源 开源 开源 开源 开源
    使用语言 服务端C++,客户端支持C、java、php等 ANSI C语言编写,提供多种语言(c/c++/java/php)的API 服务端C,客户端支持c、php、java、python等 java
    集群 支持 3.0以后支持 服务端不支持,客户端使用一致性hash算法将数据分布式存储 支持,默认是异步同步
    容灾 支持 3.0以后支持 可通过客户端实现 支持
    高可用 支持 3.0以后支持 不支持,可通过第三方应用如magent实现 支持
    动态扩展 支持 3.0以后支持 可通过客户端实现 支持,本地存储在.data和.index文件
    效率 LDB<RDB<MDB 高于redis 高于memcache
    持久化 LDB、RDB引擎支持 支持(AOF,默认RDB) 不支持,可通过第三方应所以实现 支持
    缓存过期失效策略 支持 支持 支持、LRU算法 支持、LRU(默认)、FIFO、LFU
    数据结构 K/V、list、hash、set、sortedsort等 K/V、list、hash、set、sortedsort等 支持简单的K/V结构 支持简单的K/V结构
    分布式 支持 3.0以后支持 客户端使用一致性hash算法做分布式 支持
    跨机房管理 支持 不支持 不支持 不支持
    多集群管理 支持 不支持 不支持 不支持
    使用状态 只有阿里内部大规模使用 普遍使用 使用情况较多 多用于hibernate的缓存实现
    缺点 文档不全、社区不活跃,单节点上性能没有redis高,不能对key实现模糊查询,单条数据不能太大key建议1k以下,value不能超过1M,建议10K以下 3.0以前不支持集群,单线程无法充分利用多核服务CPU,事务支持较弱,RDB每次都是写全量数据,成本高,AOF追加导致log特别大 结构单一,数据在内存重启会丢失,数据大小受内存限制 结构单一,只适用于java体系,只能用java编写客户端,且使用磁盘做cache时占用空间·
    优点 采用分布式集群架构,具备自动容灾及故障迁移能力,对存储层做了抽象,底层方便切换不同的存储引擎,采用一致性哈希算法将key分散在Q个桶中,并将桶放到不同的dataserver上,保证数据平衡,tair高可用比较强,容灾性比redis强,支持多种集群结构,支持跨机房数据分布 非常丰富的数据结构而且都是原子操作、高速读写、支持事务、支持aof、rdb两种持久化机制,拥有丰富特性、订阅发布pub/sub功能、key过期策略、事务、支持多个db、计数、支持集群和数据备份 简介、灵活,多线程非阻塞io效率高,支持多种语言api,且在并发下用cas保证一致性 效率高、功能强大,版本迭代特别快、缓存策略支持多种、可以通过rmi可插入api实现分布式缓存、具体缓存监听、支持多种缓存实例、提供hibernate的缓存实现、支持非持久化缓存数据