【虹科干货】Redis Enterprise 自动分层技术:大数据集高性能解决方案
越来越多的应用程序依赖于庞大的数据集合,而这些应用程序必须快速响应。借助自动分层,Redis Enterprise 7.2 帮助开发人员轻松创建超快的应用程序。何乐而不为?
Redis将数据存储在内存中,因此应用程序能以最快的速度检索和处理数据。然而,随着应用程序需要处理的数据越多,存储数据集所需的内存越大,所耗费的成本则更高,Redis Enterprise自动分层技术能很好地化解这个两难的局面。
一、问题:内存有限且昂贵
当应用程序访问的数据量很大,例如达到TB级时,开发人员就面临着内存有限的问题,他们一般使用基于磁盘的解决方案来在幕后支持 Redis。这样一来,开发人员就不得不在应用程序中构建整个数据管理系统,这意味着他们要把时间花在不相干的任务上。
利用 Redis Enterprise 的自动分层功能 ,开发人员可以使用固态硬盘(SSD)作为可用内存的一部分,将大容量数据库扩展到SSD中。Redis Enterprise 可以随时识别哪些数据应留在内存中,哪些数据应留在固态硬盘上,从而将吞吐量提高一倍,并将延迟减半。
因此,开发人员无需编写额外的代码或学习其他新技术。通过将动态 RAM 与高速外部存储相结合,Redis Enterprise 可以轻松高效地使用系统资源,同时还能快速访问热数据。
二、自动分层的工作原理
自动分层可自动管理数据。它会将热数据转移到 DRAM,并智能地将未使用的数据转移到 SSD。这为依赖大型数据集的应用带来了新的可能性。

通过将访问频率较低的冷数据转移到固态硬盘,开发人员可以优化内存使用,降低与大容量内存需求相关的成本。
实际上,这可以使数据量大的应用程序运行得更快,而无需开发人员额外付出。与仅使用 DRAM 的部署相比,它还能节省高达 70% 的基础硬件设施成本。而且,由于自动分层可以高效地自动管理数据访问模式,因此您无需花费时间(计算或人工筛选)来识别热数据和冷数据。

为了增强这一功能,Redis 与创新的键值存储引擎 Speedb 建立了战略合作伙伴关系。我们将其技术整合为默认的自动分层引擎。
集成 Speedb 后,Redis Enterprise 的性能显著提升,在访问相同资源的情况下,吞吐量翻倍,延迟减半。这大大拓宽了可利用自动分层优势的用例范围。在这一改进之后,Redis Enterprise 使用自动分层的数据库规模由每个内核 5k ops/秒增至10k ops/秒。

通过自动分层使核心吞吐量加倍
三、数据案例
我们来看一个案例。
下图展示了自动分层在实际工作负载场景中的性能演变示例。蓝色条代表使用以前的存储引擎(RocksDB)的 Redis Enterprise 6.4,红色条代表使用 Speedb 的 Redis Enterprise 7.2。在基础设施方面,我们使用 I4i.8xlarge AWS 实例在 10 个分片上托管 1TB 数据库,为实现高可用性,采用总共 20 个分片,为 1,024 个客户端提供服务。
为了模拟最标准的 Redis 用例,我们在 20% DRAM 和 80% SSD 的配置上定义了两种不同的有效载荷(1KiB 和 10KiB),并提供了三种可能的使用模式:平衡读/写(1:1)、重读(1:4)和重写(4:1)。在这两种情况下,我们测量了以每秒操作数为单位的吞吐量和相应的延迟。以下图表显示了结果。

与 RS 6.4 (RocksDB) 相比,RS 7.2 (Speedb) 改进了:
-
85% 命中率时:每秒操作次数增加 1.4 倍至 1.6 倍,同时延迟降低高达 2.4 倍
-
50% 命中率时:每秒操作次数增加 1.9 倍至 2.3 倍,同时延迟降低高达 3.8 倍

与 RS 6.4 (RocksDB) 相比,RS 7.2 (Speedb) 改进了: -
85% 命中率时:每秒操作次数增加 2.3 倍至 3.0 倍,同时延迟降低高达 3.0 倍
-
50% 命中率时:每秒操作次数增加 2.1 倍至 3.5 倍,同时延迟降低高达 3.5 倍
在所有情况下,带有 Speedb 的 Redis Enterprise 7.2 都具有更好的吞吐量,这意味着维持这种性能水平所需的应用程序速度更快,基础设施更少。
四、应用场景
自动分层尤其适用于将数据分为热数据和冷数据的情况。
1.移动银行
让我们来看看移动银行应用的例子。
如今,每个人的移动设备上都有银行应用程序。用户登录应用程序,获取余额,查看最后一笔交易,并获取其他相对较小和集中的信息。每个人都希望这一过程流畅、简单、即时。这些数据就是我们的热数据,存放在 Redis Enterprise 数据库的 DRAM 中。
用户希望获得更多信息的情况并不常见,例如旧交易记录–也许是两年前的税务数据。用户需要访问这些数据,但数据访问速度并不那么重要。这种数据集是我们的冷数据,可以保存在高速外部存储如固态硬盘中。
2.游戏行业
速度在游戏行业也很重要。例如,游戏应用对延迟有严格要求。另外,从本质上讲,游戏是一种潮流。随着时间的推移,游戏公司会积累越来越多的用户数据,并将其存储在用户资料数据库中,但并非所有用户都是活跃用户。通过自动分层,活跃用户的资料数据可以存储在 DRAM 中,而其他用户的数据则存储在 SSD 中。
相关文章:
【虹科干货】Redis Enterprise 自动分层技术:大数据集高性能解决方案
越来越多的应用程序依赖于庞大的数据集合,而这些应用程序必须快速响应。借助自动分层,Redis Enterprise 7.2 帮助开发人员轻松创建超快的应用程序。何乐而不为? Redis将数据存储在内存中,因此应用程序能以最快的速度检索和处理数…...
代码随想录训练营二刷第五十四天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
代码随想录训练营二刷第五十四天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 一、300.最长递增子序列 题目链接:https://leetcode.cn/problems/longest-increasing-subsequence/ 思路:定义dp[i]表示从0到i的闭区间的最长子序列长…...
LeetCode 2562. 找出数组的串联值【数组,相向双指针】1259
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
SpringBoot使用的时间与空间计量单位
SpringBoot支持JDK8提供的时间与空间计量单位 //时间单位DurationUnit(ChronoUnit.MINUTES)private Duration serverTimeOut;//存储空间单位DataSizeUnit(DataUnit.MEGABYTES)private DataSize dataSize; 在springboot中的具体使用: Component Data ConfigurationPr…...
【使用 TensorFlow 2】02/3 使用 Lambda 层创建自定义激活函数
一、说明 TensorFlow 2发布已经接近2年时间,不仅继承了Keras快速上手和易于使用的特性,同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则:简化概念,海纳百川,构建生态.这是本系列的第三部分,…...
docker--使用docker login 报错解决方案
我们在本地使用 docker login 命令登录时报错,可以尝试一下先 docker logout 命令退出登录后,在使用 docker login命令进行登录操作; docker logout...
leetcode oj
150. 逆波兰表达式求值 - 力扣(LeetCode) 思路:定义一个名为 Solution 的类,并在其中定义了一个名为 evalRPN 的公共函数。这个函数接受一个由字符串组成的向量 tokens 作为输入,并返回一个整数。 在代码中࿰…...
黑马点评-05缓存穿透问题及其解决方案,缓存空字符串或使用布隆过滤器
缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高,如果大量的请求同时访问这种…...
Flink之窗口聚合算子
1.窗口聚合算子 在Flink中窗口聚合算子主要分类两类 滚动聚合算子(增量聚合)全窗口聚合算子(全量聚合) 1.1 滚动聚合算子 滚动聚合算子一次只处理一条数据,通过算子中的累加器对聚合结果进行更新,当窗口触发时再从累加器中取结果数据,一般使用算子如下: aggregatemaxmaxBy…...
K8S:Rancher管理 Kubernetes 集群
文章目录 一.Rancher 简介1.Rancher概念2.Rancher 和 k8s 的区别 二.Rancher 安装及配置1.安装 rancher2.登录 Rancher 平台3.Rancher 管理已存在的 k8s 集群4.Rancher 部署监控系统5.使用 Rancher 仪表盘管理 k8s 集群 三.拓展1.Rancher和kubesphere相比较2.K3S和K8S相比较 一…...
后台运行python程序并查看运行的python 进程
nohup python -u Job.py > log.log 2>&1 &说明: 末尾的“&”:表示后台运行程序 “nohup” :保证程序不被挂起 “python”:是执行python代码的命令 “-u”:表示不启用缓存,实时输出打印…...
树莓派部署.net core网站程序
1、发布你的项目 使用mobaxterm上传程序 回到mobaxterm,f进入目录输入: cd webpublish 运行程序:dotnet WebApplication1.dll 访问地址为:http://localhost:5000,尝访问如下: 已经出现 返回的json,证明是可以访问的…...
淘宝商品评论数据接口,淘宝商品评论API接口
淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL,可以向淘宝服务器发起HTTP请求,获取商品评论数据。接口返回的数据一般为JSON格式,包含了商品的各种评价信息。获取到商品评论数据后,可以对其进行处理…...
455. 分发饼干
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] …...
GEE:数据预处理的细节(处理顺序。比如, select() 和 filter() 要优先于 map())
作者:CSDN @ _养乐多_ 大家在数据预处理的时候,是不是随意进行处理,并没有考虑 Google Earth Engine(GEE)性能的问题?比如选择数据集的时候,先执行map函数,再按时间选择数据?不同的处理顺序会导致不同的计算成本。 因此,本文将探讨如何在 GEE 中筛选和选择数据集合…...
【AHK】任务栏调节音量/边缘滚动调节/边缘触发
通过ahk实现类似mouseinc的边缘滚动调节音量的功能,有两个思路。 任务栏调节音量 #If MouseIsOver("ahk_class Shell_TrayWnd") WheelUp::Send {Volume_Up} WheelDown::Send {Volume_Down} return #IfMouseIsOver(WinTitle) {MouseGetPos,,, Winreturn …...
Chrome插件 — ReRes
ReRes插件是一款可以帮助Web开发人员进行开发和测试的Chrome浏览器扩展。它可以模拟网页请求,并返回指定的响应。 该插件可以用于多种情况,例如: 测试网站功能,调试程序等;本地开发Web应用时,模拟远程API…...
前端面试基础面试题——9
1.js 延迟加载的方式有哪些? 2.js同步和异步的区别? 3.什么是浏览器的同源政策? 4.介绍一下 js 的节流与防抖? 5.js 中的深浅拷贝实现? 6.Js 动画与 CSS 动画区别及相应实现 7.观察者模式和发布订阅模式有什么不同…...
tomcat 问题
一、start up.bat 闪退 在命令窗口run 看看是缺少了哪个环境变量 二、控制台输出乱码 logging.properties 底部添加 java.util.logging.ConsoleHandler.encoding GBK 三、缓存不足 context.xml配置 <Resources cachingAllowed"false" cacheMaxSize"100…...
小程序首页如何进行装修设置
小程序首页是展示给用户的第一屏,它的装修直接影响到用户对小程序的第一印象。小程序首页的设置在小程序管理员后台->页面设置->首页,下图是小程序首页默认的设置。 下图,是小程序首页的具体表现形式。下面具体解释小程序首页各个设置项…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
