Tair(1):Tair介绍

1 介绍

​ 在Tair出现之前的很长一段时间里,像redis、memcache这些知名NoSql数据库是不支持分布式的,在这样的背景下,由淘宝网自主开发并在2010.6开源的一个高性能、高扩展、高可靠分布式缓存,类似map的key/value结构,在淘宝、天猫等各个应用中广泛应用。

​ Tair官网:https://www.oschina.net/p/tair

​ gitee地址:https://gitee.com/mirrors/Tair

​ github wiki地址:https://github.com/alibaba/tair/wiki

2 概念

  • configID:一个Tair集群的唯一标识
  • namespace:应用的一个内存或者持久化存储区域,0到65535之间的一个数字
  • quta:配额,对应了每个 namespace 储存区的大小限制,超过配额后将使用LRU(最少使用)策略淘汰
  • expireTime:数据的过期时间。当超过过期时间之后,数据将对应用不可见,不同的存储引擎有不同的策略清理掉过期的数据
  • prefix:前缀处理,保证了拥有相同前缀的key根据哈希算法后,分散在同一个dataserver上,提高了处理速度。

3 特性

​ 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结构,性能最低,但是可靠性最高。

4 应用场景

​ 由于Tair底层的MDB、RDB、LDB三种引擎支持,既能作为缓存使用又可以作为持久化存储数据库,命令除了put、get、delete以及批量接口外,还有一些附加的实用功能比如version支持、原子计数器、item支持,可以用于实现分布式锁,队列等。

5 Tair与其他缓存对比

TairRedisMemcacheEhcache
是否开源开源开源开源开源
使用语言服务器端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的缓存实现、支持非持久化和持久化缓存数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206721.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用单例模式+观察者模式实现参数配置实时更新

使用vector存储观察者列表 #include <iostream> #include <vector> #include <functional> #include <algorithm>// 配置参数结构体 struct MyConfigStruct {int parameter1;std::string parameter2; };class Config { public:using Observer std::f…

hive 命令行中使用 replace 和nvl2 函数报错

1.有时候在命令行的情况下使用 replace 函数时会报错 这个时候可以使用 translate 代替 2.有时候使用 nvl2() 函数的时候会报错 这个时候可以用 case when 来代替

【Spring 源码】 深入理解 Bean 定义之 BeanDefinition

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

两数之和问题

更好的阅读体验请点击 两数之和。 题目&#xff1a;两数之和 ​ 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 ​ 你可以假设每种输入只会对应一个答案。但是&#xff…

MetricBeat监控Redis

目录 一、安装部署 二、开启Redis监控模块 三、编辑Redis配置文件 四、启动Metricbeat 五、查看监控图表 一、安装部署 metriceat的安装部署参考章节&#xff1a; 监控组件>Metricbeat安装使用&#xff0c;这里不再赘述。 二、开启Redis监控模块 进入metricbeat安装目录…

【每日一题】出租车的最大盈利

文章目录 Tag题目来源解题思路方法一&#xff1a;递归方法二&#xff1a;递归记录数组记忆化搜索方法三&#xff1a;动态规划&#xff08;递推&#xff09; 写在最后 Tag 【递归】【记忆化搜索】【动态规划】【数组】【2023-12-08】 题目来源 2008. 出租车的最大盈利 解题思路…

【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

蓝桥杯从零开始备战(Python组)---基础知识篇

第一次尝试报名蓝桥杯的Python组&#xff0c;好好备战&#xff0c;希望省赛可以拿奖&#xff01;目前是整理了一些Python的常用函数和常用内置库&#xff0c;后面可能会开始刷题&#xff0c;如果有比较需要记住的知识点&#xff0c;会再写一篇刷题篇 一、输入输出 1.输入字符…

游戏被攻击怎么办

随着科技的进步和互联网的普及&#xff0c;游戏行业也正在经历前所未有的变革。玩家们不再满足于传统的线下游戏&#xff0c;而是转向了线上游戏。然而&#xff0c;随着游戏的线上化&#xff0c;游戏安全问题也日益凸显。游戏受到攻击是游戏开发者永远的痛点&#xff0c;谈“D“…

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居

HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居 文章目录 HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssist…

【嵌入式开发 Linux 常用命令系列 4.1 -- git push 远程分支与本地分支查看】

文章目录 概述git push 语法步骤1&#xff1a;git 远程主机名查看步骤2&#xff1a;git 远程分支名查看步骤3&#xff1a;git 本地分支名查看示例演示 概述 在日常工作中&#xff0c;将代码 git clone 本地之后&#xff0c;或者使用repo init && repo sync 之后不知道…

SQLserver截取字符串

当我们存的数据是json的时候可以全部取出在模糊查询但是有多个重复数据的时候就没办法准确的模糊出来这个时候我们就需要用的字符串截取 --创建函数create FUNCTION [dbo].[Fmax] (str varchar(50),start VARCHAR(50),length VARCHAR(50)) RETURNS varchar(max) AS BEGINDEC…

商品详情页评论和评论列表评论的排序html代码

以下是一个简单的商品详情页的 HTML 代码示例&#xff1a; <!DOCTYPE html> <html> <head><title>商品详情页</title><style>/* CSS 样式可以在这里添加 */</style> </head> <body><h1>商品详情页</h1><…

7-1 查找书籍

给定n本书的名称和定价&#xff0c;本题要求编写程序&#xff0c;查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n&#xff08;<10&#xff09;&#xff0c;随后给出n本书的信息。每本书在一行中给出书名&#xff0c;即长度不超过30的字…

条码生成器与Zint使用

文章目录 目的条形码zint支持条形码种类下载编译qt pro配置code保存条形码目的 1: 了解条形码数据理论知识 2: 了解zint第三方库相关, 如何编译引用到项目中 条形码 条形码(Barcode)一维码 和二维码(QR code)都是用于存储信息的图形化表示方式,通常应用于商品标识、库…

无头浏览器与Selenium:探索无界爬虫的奇妙世界

selenium设置无头浏览器 背景 ​ 我们之前的selenium都是浏览器驱动自动打开一个网页&#xff0c;执行相关操作&#xff0c;其实也可以让其后台显示&#xff0c;不用在前台显示。 ​ 要设置无头浏览器&#xff0c;可以使用Selenium的Headless模式。在Headless模式下&#xf…

鸿蒙(HarmonyOS)应用开发——web组件

简述 在开发的工作中&#xff0c;可能存在一个场景&#xff0c;我们有一个问卷调查的h5页面&#xff0c;需要切入到app 中。这个时候&#xff0c;就需要从app 端操作&#xff0c;切换到web端操作。不管是安卓、ios、小程序都提供有web组件。那么harmonyos 中也提供web组件来在…

Kafka中的Topic

在Kafka中&#xff0c;Topic是消息的逻辑容器&#xff0c;用于组织和分类消息。本文将深入探讨Kafka Topic的各个方面&#xff0c;包括创建、配置、生产者和消费者&#xff0c;以及一些实际应用中的示例代码。 1. 介绍 在Kafka中&#xff0c;Topic是消息的逻辑通道&#xff0…

【华为数据之道学习笔记】3-2 基础数据治理

基础数据用于对其他数据进行分类&#xff0c;在业界也称作参考数据。基础数据通常是静态的&#xff08;如国家、币种&#xff09;&#xff0c;一般在业务事件发生之前就已经预先定义。它的可选值数量有限&#xff0c;可以用作业务或IT的开关和判断条件。当基础数据的取值发生变…

GSAP动画库,探究苹果官网页面滚动动画是如何实现的

GSAP动画库&#xff0c;探究苹果官网页面滚动动画是如何实现的 前言 每次浏览苹果官网时都在好奇&#xff0c;当我们向下滚动页面时一个个文字或图片总能缓缓浮现&#xff0c;往上滚动时又能慢慢收起来&#xff0c;这就究竟是如是实现的呢。在查阅一些资料时发现了Scrollmagi…