适用的基础场景如下: 1. 单个数据大小较小,一般在KB级别以下。建议最大最大不要超过10k,虽然接口限制value最大值为1M,但是大value会极大降低集群性能,强烈不推荐!! value很大且必须要使用tair的,可以考虑对value进行拆分或者压缩。
- 访问的qps(Query Per Second,对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准)较高(有千级别及以上),rt(RESPONSE TIME)要求较高(ms级别)。
不适用的基础场景如下:
1. 需要类似于数据库like命令的模糊查询功能。
2. 需要根据value进行反查。
3. 单条value很大,达到上百k甚至M。
4. qps很低,在百级别以下。
tair目前有mdb引擎,ldb引擎和rdb引擎三款产品可供选择。 数据不需要持久化的,考虑mdb或者rdb引擎,数据需要持久化的,考虑ldb引擎。
mdb
是tair最早的一款内存型产品,也是在公司内部应用最广泛的集中式缓存。特别适用容量小(一般在M级别,50G之内),读写qps高(万级别)的应用场景。由于是内存型产品,因此无法保证数据的安全性,对数据安全有要求的应用建议在后端加持久化数据源(比如mysql)。
典型应用场景
- 用于缓存,降低对后端数据库的访问压力。
- 临时数据存储,分钟级别后失效,偶尔部分数据丢失不会对业务产生较大影响。
- 读多写少,读qps达到万级别以上。
ldb
是基于leveldb开发的一款持久化产品,这是和mdb最本质的区别,适用于确实有持久化需求,读写qps较高(万级别)的应用场景。
rdb
是基于redis开发另一款内存型产品,和mdb一样,rdb也适用于容量小(一般在M级别,50G之内),读写qps高(万级别)的应用场景。和mdb不同的是,rdb在存储数据结构上支持更为丰富。rdb不仅支持key对应一个value的结构,同时也支持key对应多个value的结构,结构可以是list/map/set/zset。
典型应用场景
1.用list结构来显示最新的项目列表;
2.用sortedset来做排行榜,取Top N;
3.用set来做uniq操作,如页面访问者排重;
4.使用hset来做单key下多属性的项目,例如商品的基本信息,库存,价格等设置成多属性。