介绍
在Tair出现之前的很长一段时间里,像redis、memcache这些知名NOSQL数据库是不支持分布式的,在这样的背景下,由淘宝网自主开发并在2010.6开源的一个高性能、高扩展、高可靠分布式缓存,类似map的key/value结构,在淘宝、天猫等各个应用中广泛应用。
概念
- configID:一个Tair集群的唯一标识
- namespace:应用的一个内存或持久化存储区域,0到65535之间的一个数字
- quta:配额,对应了每个namespace储存区的大小限制,超过配额后将使用LRU策略淘汰
- expireTime:数据的过期时间。当超过过期时间之后,数据将对应用不可见,不同的存储引擎有不同的策略清理掉过期的数据
- prefix:前缀处理,保证了拥有相同前缀的key根据哈希算法后,分散在同一个dataserver上,提高了处理速度
特性
Tair实现了集群部署,特性都是一些集群的特性,容错、解决单点故障、跨机房管理、多集群管理、支持副本等。Tair的特性有:
- namespace
- expire
- prefix
- list、zset、hash、set
- localcache
- flowcontrol
抽象存储层,内部采用MDB、RDB、LDB三种存储引擎满足了各种存储需求
MDB是内存型,K/V结构,底层是memcache,由于是内存型性能最高但是不支持持久化
RDB底层是redis引擎,支持List、Set、Zset、Map、String等多种数据结构,性能略低于MDB
LDB是持久化型引擎,底层是google的levelDB,K/V结构,性能最低,但可靠性最高
应用场景
由于Tair底层的MDB、RDB、LDB三种引擎支持,既能作为缓存使用又可以作为持久化存储数据库,命令除了put、get、delete以及批量接口外,还有一些附加的实用功能比如version支持、原子计数器、item支持,可以用于实现分布式锁,队列等。