已经触碰到Redis的性能边缘? 看看久经考验的Redis企业版(Tair)吧

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis作为NoSQL最受欢迎的数据库之一,在国内市场长期占据Key-Value NoSQL市场的榜首。它的高性能,易用性和提供的常用数据结构极大的简化了开发人员和用户的开发和使用,能够更好更快的构建出客户系统。

Redis作为NoSQL最受欢迎的数据库之一,在国内市场长期占据Key-Value NoSQL市场的榜首。它的高性能,易用性和提供的常用数据结构极大的简化了开发人员和用户的开发和使用,能够更好更快的构建出客户系统。

Redis在使用时也有一些短处,经常遇到的有:

  1. 没有管控系统。Redis只提供一个存储核心,无论是生存周期管理还是参数配置都需要自己开发。
  2. 单线程模型,容易卡住。Redis使用了无锁的单线程模型来工作,但是如果有一个特别慢的查询,那么就会整体卡住Redis本身,使判活失败导致实例不可用。
  3. 集群版和扩缩容不完善。Redis本身提供了集群版功能,但是在大集群下并不完善;用户更习惯使用proxy代理来管控集群。变配和扩缩容的难度非常大。
  4. 监控和审计缺失。对于高速NoSQL数据库而言,需要有更完善的基础设施来支撑。不仅包括完善的监控,告警系统,还有日志、诊断及审计等,完整得搭建服务平台非常繁琐。

由于Redis经常作为高速内存存储和缓存使用,一般用于用户数据链路的关键在线业务。如果Redis有了问题会直接影响用户的产品功能和用户体验。缺乏必要的管理和监控,没有对Redis核心引擎做增强,一旦遇到问题用户的业务就很难快速发现,快速处理和恢复。

简而言之,Redis很难做到“开箱即用”,要在引擎核心和管控系统做大量工作。

云Redis社区版

正如上文中提到的Redis的不足,阿里云最早将Redis放到公有云的最基本出发点就是解决“有”和“无”的问题,提供完善的开箱即用的功能,和平滑扩缩容的能力。社区版Redis无论是主备版本还是集群版本都完全兼容Redis所有命令,用户能够很快的迁移并快速部署自己的业务服务。

阿里云是国内最早将Redis商业化的公司之一,也是国内对Redis社区贡献最大的实体。如在新发布的Redis-6.0RC中,aliyun的commit贡献仅次于作者。其中很多核心的改进如短链接优化,正则匹配效率等已经发布至官方。
技术-01.png
对于小型应用服务来说,阿里云Redis社区版已经足够。
技术-02.png

云Redis企业版(Tair)

阿里在内部大型系统诸如电商(淘宝,天猫)、优酷、高德等使用Redis非常早,但发现Redis在支撑大型或者超大型服务上的能力还是有所欠缺的,主要问题有:

• 单线程Redis有很明显的C10K问题,即在大链接状态下抗冲击能力很差。大型和超大型应用动辄就有一万或者几万进程连接Redis,一个冲激响应或者一个慢查询就可能导致连接数雪崩。
• 要求单分片有更强的服务能力。Redis社区版的一个很大的问题是一个Redis进程在O(1)的操作大致有10~13w OPS的服务能力,在极端和突然场景下仍旧不够,常用的一些命令和数据结构如String、List、Hash等。
• 数据结构模块(Module)。Redis提供的基础的Hash、List、Set等是通用的是对通用互联网环境的总结,而在阿里和大型企业有着更多的模块的需求。引入新的特定的数据结构模块能够极大的简化用户开发,并大幅提升用户系统的性能。
• 混合存储。针对大容量低访问但对RT(latency)不敏感的应用,使用混合存储不但能大幅降低用户的成本,还能提供更优秀的持久化能力和数据可靠性。
• 另外,与Redis社区版不同,客户也需要一个长期维护的稳定版本,保证用户业务的持续被集成的能力。
技术-03.png
对于企业版来讲,在完全继承社区版能力上,着重解决应用运行得“好”,用户开发得“爽”的问题,解决用户在深度使用Redis的痛点和瓶颈。

Tair和Redis

Tair团队是阿里集团最核心的团队之一,负责整个阿里的缓存和高速存储体系。MemCache/Redis/图数据库GDB都是Tair团队将阿里内部成熟的产品孵化到云上,服务公有云和专有云客户。

云Redis企业版就是Tair3.0。它将阿里多年来在高速存储技术再次输出到云上,打造对内对外一致的服务,使得我们云上客户也能够享受到阿里技术的红利,再次突破技术的桎梏,为用户业务的高速发展保驾护航!
技术-04.png

性能增强版

性能增强版Redis即RDB3.0,旨在为用户提供更强大的服务能力和灵活的构建能力,主要包括:
• 多线程Redis可以突破Redis单机性能极限,对于常用的数据结构加速可达三倍(400-450K OPS)。支持高达数万连接的冲击,足以应对大型的活动如热播,秒杀等场景。
• 社区高版本Redis6.0 RC虽然也支持多线程,但是IO架构上与性能增强版不同,但仍未解决C10K和大链接冲击问题
技术-05.png

混合存储版

混合存储版Redis即PDB3.0,它使用磁盘来存储用户的数据,并提供了高度的Redis兼容力。它特别适合访问量并不大但有大量数据存储的应用场景。
• 混合存储Redis很好解决了存储成本与性能的的平衡问题:经常访问的数据缓存在内存中,这样做既提升了存储的经济型,也保证了对热数据的访问效率。
• 高效的换入换出通道,能够将用户的热请求数据前置到内存中,能够让业务应用获得更好的时延体验。
技术-06.png
由于新硬件的引入,存储和高速NoSQL数据库正处于变革期。混合存储将持续将业内最先进的设备如NVM,RDMA等加速至系统引擎,能够让云上用户尽快享受到最新技术带来的产品优势,从容的应对未来的挑战。

数据结构模块(modules)

•数据结构模块(Module)提供了更多常见的新数据类型,能够让用户更灵活快速的构建出高效服务。这些模块已经在阿里内部广泛使用多年,非常具有代表性和特色,其中包括:
•CAS/CAD:提供原redis string命令的compare-and-swap/compare-and-delete能力,可用于原子交换、分布式锁等场景。尤其是分布式锁这个场景,阿里集团的大多数分布式锁都是使用SETND/CAD/CAS来实现的
技术-07.png
•TairString:支持并发访问的String类型,每个String都携带version版本号,可用于并发更新,和乐观锁等场景
•TairHash:大幅改良了Redis hash类型的不足,为每个field(子key)都携带了超时(TTL)和版本号(version),用户可以非常方便的构建账号系统,安全审计规则、流控器等场景
技术-08.png
•TairBloom:完全兼容RedisBloom,提供高性能的可伸缩的布隆过滤器(bloomfilter),可用于机器学习、爬虫系统等。
技术-09.png
•TairDoc:完全兼容reJSON模块,提供JSON格式的结构化存储。TairDoc具备更强大的功能,诸如同时支持JSON Pointer和JSON Path两种语法、支持JSON到XML/YAML格式的转换等。特别适合在前端和配置中心类应用中使用。
技术-10.png
•TairGis: 重量级的专业GIS模块,提供了点、线、面之间的相交、包含等关系运算,弥补了Redis原生geo数据结构只能做点位置运算的不足。可以用户替换PostGIS+缓存场景,特别适合地图、物流、电子围栏(点和多边形的地理位置关系)、地理勘探等应用场景,高德菜鸟等很多高性能地理位置业务很多都是构建于TairGIS之上。比如最近的疫区检测,通过输入疫区的地理位置围栏,就可以判断路线是否经过(线段与多边形是否相交)
技术-11.png

总结

随着云上客户的高速发展,用户已经逐步发展并触摸到了社区Redis的能力的边缘。同时,Tair作为阿里原创的高性能内存数据库产品,也已经逐步完成了“企业版Redis应该是什么形态”这个问题的探索,并在阿里集团的各个部门进行了研发与充分的验证。
从2016年起的双11大促和每次促销活动以及线上的各项互动游戏、优酷世界杯、高德出行节,历次大麦的抢购、推荐与推送、菜鸟的每一次大数据路线仿真运算都与企业版Redis的高性能和极高的可靠性息息相关。

值得一提的是,Redis在国内的使用方式与国际市场并不完全相同。在国际市场上,它更多的被当作“缓存”来使用,这是它的定位。而在国内,更多的被当作内存数据库来使用。这本身就对企业版Redis提出了更高的要求。这也是阿里云Redis后续持之努力的方向。

请大家持续的关注企业版Redis(Tair),我们也希望大家给我们更多的反馈和使用建议。谢谢大家!

观看Redis企业版 & 专享主机组新品发布会直播视频https://yq.aliyun.com/live/2148
“限时特惠:1年7折,2年6折!了解更多产品特性,欢迎点击查看https://www.aliyun.com/database/redistair

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
24天前
|
存储 NoSQL PHP
PHP与Redis结合使用,提升数据存储性能
随着互联网应用的发展,PHP与Redis的结合成为提升数据存储性能的重要手段。PHP作为流行的服务器端语言,常用于网站开发;Redis作为高性能内存数据库,以其快速读写能力,有效优化数据访问速度,减轻数据库压力。两者结合通过缓存机制显著提升应用响应速度,支持高并发场景下的稳定性和可扩展性。
|
3月前
|
存储 缓存 NoSQL
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
深入探究Redis的AOF持久化:保障数据安全与恢复性能的关键机制
88 0
|
5月前
|
监控 NoSQL Redis
Redis性能优化问题之什么是 Swap,为什么使用 Swap 会导致 Redis 性能下降,如何解决
Redis性能优化问题之什么是 Swap,为什么使用 Swap 会导致 Redis 性能下降,如何解决
|
4月前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存 Azure Cache For Redis】Redis性能问题,发现Server Load非常的高,导致正常连接/操作不成功
【Azure Redis 缓存 Azure Cache For Redis】Redis性能问题,发现Server Load非常的高,导致正常连接/操作不成功
|
4月前
|
缓存 NoSQL 测试技术
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
|
5月前
|
NoSQL Redis
Redis性能优化问题之根据 Redis 的 AOF 配置级别优化性能,如何解决
Redis性能优化问题之根据 Redis 的 AOF 配置级别优化性能,如何解决
|
5月前
|
NoSQL 固态存储 Redis
Redis性能优化问题之如果磁盘资源被其他应用程序占用导致 Redis 性能下降,应该如何解决
Redis性能优化问题之如果磁盘资源被其他应用程序占用导致 Redis 性能下降,应该如何解决
|
4月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
4月前
|
NoSQL Java 调度
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
|
NoSQL Java Redis
技术选型系列 - Tair&Redis对比
* Redis http://www.redis.net.cn/ http://doc.redisfans.com/ * Tair http://code.
1769 0