无敌了!Redis进军磁盘存储!
在高手林立的数据库江湖,Redis就像一个刺客,或许不如经典数据库存在感强,但因其高性能的特质而在群英榜中独占一席。
作为缓存的首选内存数据库,Redis最近放出了一个大新闻——将磁盘作为分层存储体系结构的一部分,以降低成本并扩大系统的吸引力。
关键在于,Redis 本身是一个内存数据库,这意味着其数据存储在RAM中而不是磁盘上。与传统的基于磁盘的数据库相比,这提供了更快的读写吞吐量和更低的延迟。某种意义上说,Redis的成功正是在于这种“打破常规”。
但如今,Redis又将磁盘纳入其存储体系中,不禁让人猜测:Redis到底意欲何为?自废武功还是在下一盘大棋?
1、对抗价格优势:纳入磁盘,降低成本?
早期由于内存价格昂贵等原因,内存数据库发展较慢。随着内存技术逐渐成熟,内存成本下降,同时容量稳步扩大,内存数据库和传统数据库混合使用正成为趋势。Redis就是内存数据库中的佼佼者。
在2023年Stack Overflow调查中,Redis被评为专业开发人员中最受欢迎的数据库第六位,最受欢迎的NoSQL数据库第二位。通过Redis能够创建缓存以防止主数据库过载,因此大约23%的专业开发者使用该系统。
可以说,Redis当前已成为蓝星上最受欢迎的数据库之一。不过Redis并不满足于此。
其首席执行官Rowan Trollope在接受外媒采访时表示,亚毫秒级分布式系统为开发人员提供了所需的性能,但必须承认的是,为互联网规模构建的其他系统(如MongoDB)可能更具有价格优势。
为了解决这个问题,该公司已经创建了一种分层的内存方法,在其内存系统后提供闪存支持。
“我们在磁盘和内存之间只隔了半步。对于某些特定的用例,例如在游戏中,公司可能会让我们提供他们需要的实时积分排行榜和其他游戏内统计数据。”
然而,在游戏发行的初期热潮之后,大量用户将完成游戏,他们的账户也会随之进入休眠状态,直到新章节或新内容发布时,他们才可能重返游戏。Trollope说,使用闪存可以让用户对内存进行动态地分级。
“我们可以将一段时间内未被接触的较少使用的数据转移到闪存中,在那里存放一段时间。当用户最终回来的时候,我们很容易将其从闪存无缝地移回内存中。”
Redis现在计划将这个概念扩展到基于磁盘的内存,以提供对三层架构的支持。Trollope指出,希望此举将帮助客户降低成本并简化其架构。
2、Redis的野心:无敌是多么寂寞,所以我们要开新地图
在Trollope看来,Redis的流行在很大程度上要归功于缺乏竞争。“我们并没有真正与其他公司竞争。”
当然这一说法有待商榷。至少同为高性能NoSQL数据库的Aerospike也是风头正劲。Aerospike的客户包括索尼娱乐、PayPal和Airtel。
今年8月,Aerospike 宣布推出图数据库 Aerospike Graph。Aerospike Graph 以极高的吞吐量跨数十亿个顶点和数万亿个连接提供毫秒多跳图查询。基准测试显示,在一小部分基础设施上,每秒的吞吐量超过100000次查询,延迟低于5毫秒。
遗憾的是,Aerospike虽然来势汹汹,但还欠火候。在Stack Overflow的榜单中,它没有进入专业开发人员使用的前30个数据库之列。另外,数据库业界最权威的排名榜单DB-Engines将Aerospike排在第65位,而Redis排在第6位。
同时,Trollope坚持,要从更宏观的层面去看,Redis在一条“与众不同”的赛道上,在这条赛道上,Redis可以说是“一家独大”。
“我想说的是,细数世界上最流行的数据库,我们是领先的内存数据库,没有其他人能做到这一点。Mongo不这么做。也没有云厂商这样做,比如微软Azure Cosmos DB,或Oracle,或Amazon DynamoDB:他们不是内存数据库。我们与所有其他排名前十的数据库一起使用,但我们并没有真正与它们竞争。”
(Stack Overflow 2023 开发者调查报告数据库TOP10)
当在某一领域进入“无敌”状态,要想更进一步,那就唯有开启新地图了。
Redis就是这样做的。作为缓存数据库Redis的成功毋庸置疑,但Redis一直在努力扩大其作为通用数据库的吸引力。
去年11月,Redis 收购了 RESP.app,后者是一个易于使用的 GUI,用于访问Redis数据库并执行基本的批量操作,从而简化开发人员的日常工作。
另外,对Redis的一个主要批评是它缺乏对SQL的支持。Trollope表示,现在已经解决了。RediSQL模块在GitHub上是可用的。
在他看来,这是推动Redis“更像你的经典数据库”的一部分。在未来,将添加对自然语言查询的支持以及增强的向量和特征存储功能。
图穷匕见,Redis的种种行动昭示了其雄心:成为一个出色的配角还不够,必须要提升其作为主咖的角色份额。
3、开发者异议:他们正在偏离我们选择Redis的初衷
对于Redis的CEO发出的“推动Redis‘更像经典数据库’”的表态,开发者中有人表示了理解,认为这可能是顺应市场需求的选择。
“数据‘存储’之间的界限正在变得模糊。我以前见过x团队需要一个快速的键值存储,所以显而易见的选择是Redis。一年过去了,产品在不断发展,开发者想要做一些‘经典’的查询。也许在Redis中保留它是有意义的,因为它支持你需要的查询,而不是迁移/复制到整个其他系统。”
但更多人的第一反应是:这似乎偏离了人们使用Redis的初衷。
至今被引为美谈的Redis的诞生,正是由于Redis之父Salvatore Sanfilippo对数据库“缺乏经验”,这才使他敢于打破“良好”数据库工程的各种神圣规则,从而创建Redis。而很多开发人员最初被Redis吸引,选择使用Redis,也正是因为它不像所谓“经典数据库”。
还有人对目前Redis的发展走向表示了强烈反对,他主张“Redis的一大优点是它没有SQL数据库的开销”。
“我使用Redis和MySQL一起构建web应用程序。当你需要在服务器端存储临时或任意数据时,Redis非常出色,没有MySQL之类的开销。对于我们来说,我们在应用程序中为用户创建Redis键,然后将序列化的数据写入该键。让数据进出这个结构都非常简单,更不用说速度了。通常都是不需要持久化的数据,不过我相信如果有必要的话也可以写入磁盘。我不想编写SQL样式的查询来读取或写入这样的数据。对于我所描述的数据类型,我绝对不希望也不需要MySQL提供的事务或任何‘安全’特性。”
这位开发者强调:“Redis目前的形式很好,有很多不同的用例。没有绝对正确或错误的使用方法,除了它绝对不能替代像MySQL这样的东西。因为不同的工具适用于不同的工作。”
4、结语:性能为王,但绝不甘于只做一个高性能的缓存数据库
Redis最引以为傲的,可能就是其开辟了一条有别于传统数据库的新路,并成功在竞争堪称惨烈的数据库赛道上存活并壮大了起来。“高性能”的特质迄今为止仍是其标志和支柱。
性能为王并非口号,而且随着时间的推移只会越发严格。你永远不会听到一个老板说,“我希望我们的数据库慢一点”。如何让数据库易开发、低延时、可扩展且面向未来才是更重要的。
不过就像Redis在其官方博文中提到的:Redis 是一个很好的缓存数据库,但扩展Redis作为主数据库的角色,从而让开发人员在构建应用程序时领先一步,才是其未来发展的愿景。到底结果如何,我们且观后效。
5、最后,推荐一款应用开发工具
JNPF开发平台,很多人都用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。
原理是将开发过程中某些重复出现的场景、流程,具象化成一个个组件、api、数据库接口,避免了重复造轮子。因而极大的提高了程序员的生产效率。
官网:http://www.jnpfsoft.com/?csdn,如果你有闲暇时间,可以做个知识拓展。
这是一个基于Java Boot/.Net Core构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;集成了代码生成器,支持前后端业务代码生成,满足快速开发,提升工作效率;框架集成了表单、报表、图表、大屏等各种常用的Demo方便直接使用;后端框架支持Vue2、Vue3。
为了支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统软件开发几乎没有差异,只是通过低代码可视化模式,减少了构建“增删改查”功能的重复劳动。
相关文章:

无敌了!Redis进军磁盘存储!
在高手林立的数据库江湖,Redis就像一个刺客,或许不如经典数据库存在感强,但因其高性能的特质而在群英榜中独占一席。 作为缓存的首选内存数据库,Redis最近放出了一个大新闻——将磁盘作为分层存储体系结构的一部分,以…...

中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明
中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明 上图说明:该软件可以用于桌球和棋牌同时计时计费,在没有开台的时候,图片是处于等待状态,这使用编程工具中的固定图像构件,在…...

在线客服系统源码 客服系统源码
在线客服系统源码 客服系统源码 框架:Thinkphp5workerman,环境:nginxphp7.3mysql5.6 多商户客服、不限坐席、独立系统--数据存储自己服务器上,支持开启SSL、支持离线对话。 新款在线客服系统全开源无加密:多商户、国…...

抽象轻松java——简易图书馆前置
用Maven写一个垃圾的项目,第一步打开IDEA,点击创建,创建一个Maven <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</versi…...

图书推荐管理系统Python+Django网页界面+协同过滤推荐算法
一、介绍 图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有&#…...
IT行业就业方向:探索未来的职业机会
引言: 随着信息技术的飞速发展,IT行业已经成为了当前最具活力和发展潜力的行业之一。在这个充满机遇和挑战的时代,选择一个好的就业方向对于个人的职业发展至关重要。本文将探讨IT行业中哪些方向具有更好的就业前景,并提供一些建…...

docker-compose安装ES7.14和Kibana7.14(有账号密码)
一、docker-compose安装ES7.14.0和kibana7.14.0 1、下载镜像 1.1、ES镜像 docker pull elasticsearch:7.14.0 1.2、kibana镜像 docker pull kibana:7.14.0 2、docker-compose安装ES和kibana 2.1、创建配置文件目录和文件 #创建目录 mkdir -p /home/es-kibana/config mkdir…...
k8s-----14、controller-Job和Cronjob
Job和Cronjob 1、Job(一次性任务)2、CronJob(定时任务) 1、Job(一次性任务) [rootmaster controlleryaml]# cat job.yaml apiVersion: batch/v1 kind: Job metadata:name: pi spec:template:spec:contain…...

蓝桥杯每日一题2032.10.24
蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由于布局为两个字节为一行,那我们输入两个数就为一行,但是这两个数全部得用二进制进行表示使用bitset bitset:将一个数转化为二进制 bitset<8>:将一个数转化为8位…...

【AGC】更新应用信息报未知错误解决方法
【问题描述】 最近有几个开发者遇到了一个问题,他们在AGC控制台配置好应用信息的图标和截图之后,点击保存按钮会弹出“未知错误,请稍后再试”的异常报错,导致无法正确保存应用配置信息。 出错页面如图所示。 【解决方案】 …...
一个注解让 Spring Boot 项目接口返回数据脱敏
1 背景 需求是某些接口返回的信息,涉及到敏感数据的必须进行脱敏操作 2 思路 ①要做成可配置多策略的脱敏操作,要不然一个个接口进行脱敏操作,重复的工作量太多,很显然违背了“多写一行算我输”的程序员规范。思来想去ÿ…...
测试人员的KPI怎么设置
关于测试部的KPI,简单列举下自己所经历部门的考核指标: 工作量。根据平时跟踪的需求,编写的用例,提交的bug数等综合评估; 负责项目的质量。上线项目是否出现重大功能的事故, 如果出现了事故,分…...

Databend 开源周报第 116 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 特性预览&#…...
mongodb-gridfs下载文件报Sort exceeded memory limit of 104857600 bytes异常
报错详细信息 com.mongodb.MongoQueryException: Query failed with error code 292 and error message Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting. on server 11.51.141.…...

分享一下微信小程序里怎么实现扫码点餐链接
在当今数字化时代,扫码点餐已经成为了餐饮行业的一种趋势。通过微信小程序,实现扫码点餐功能,可以为餐厅带来诸多便利和优势。本文将详细介绍如何在微信小程序中实现扫码点餐功能,帮助餐厅提高服务效率和质量,提升用户…...
安卓开发环境安装教程
在本教程中,我将向您介绍如何在Windows操作系统上安装Android开发环境。Android开发环境包括Java Development Kit(JDK),Android Studio IDE和相应的SDK工具。跟随以下步骤,您将能够搭建安卓开发环境并开始开发自己的应…...

深入探究Selenium定位技巧及最佳实践
在使用Selenium进行Web自动化测试时,准确地定位元素是非常重要的一步。Selenium提供了多种元素定位方法,本文将深入探究这八大元素定位方法,帮助读者更好地理解和应用Selenium的定位技巧。 1. ID定位 ID是元素在HTML中的唯一标识符ÿ…...
如何正确安装psycopg2,No module named ‘psycopg2._psycopg‘解决
二、psycopg2安装方法 psycopg2可以通过多种方式安装,我们这里介绍两种常用的方式:通过pip安装和手动安装。 1、通过pip安装psycopg2 如果已经安装了pip,那么在命令行中输入以下命令即可完成psycopg2的安装: pip install psyc…...
go WriteFile文件追加写入(适合小文件)
go 在做文件追加写入时一般用os.OpenFile 指定 FileMode 为 os.O_APPEND. 如官方文档示例: f, err : os.OpenFile("access.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)if err ! nil {log.Fatal(err)}if _, err : f.Write([]byte("appended some data\n&…...
history 模式上线需要注意什么事项?
结论先行: 首先,需要在服务器上对所有的路由路径进行配置,避免在访问路由时出现 404 的情况; 其次,需要特别注意安全性和兼容性问题。 因为使用 History 模式会暴露出服务器上的文件路径,因此在部署时需要…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...