Redis进军磁盘存储

目录

1、对抗价格优势:纳入磁盘,降低成本?

2、Redis的野心:无敌是多么寂寞,所以我们要开新地图

3、开发者异议:他们正在偏离我们选择Redis的初衷

4、结语:性能为王,但绝不甘于只做一个高性能的缓存数据库


        在高手林立的数据库江湖,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

                                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作为主数据库的角色,从而让开发人员在构建应用程序时领先一步,才是其未来发展的愿景。到底结果如何,我们且观后效。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (四)

这篇博客是之前文章: Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (一)Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二&a…

ROS自学笔记十八:ModuleNotFoundError: No module named ‘serial‘

出现上述错误,则需要安装serial功能包 第一步:输入 sudo apt install python3-pip 第二步:输入 pip install pyserial

List 3.5 详解原码、反码、补码

前言 欢迎来到我的博客,我是雨空集(全网同名),无论你是无意中发现我,还是有意搜索而来,我都感到荣幸。这里是一个分享知识、交流想法的平台,我希望我的博客能给你带来帮助和启发。如果你喜欢我…

记一次线程爆满导致服务器崩溃的问题排查

记一次线程爆满导致服务器崩溃的问题排查 重启服务器 重启后,ssh连接发现下面问题 fork faild:Cannot allocate memory 以为是内存满了 于是,free -h,查看内存情况,还有,观察一段时间后,内存没多大变化 修改…

【扩散模型】HuggingFace Diffusers实战

HuggingFace Diffusers实战 1. 环境准备2. DreamBooth2.1 Stable Diffusion简介2.2 DreamBooth 3. Diffusers核心API4. 实战:生成美丽的蝴蝶图像4.1 下载数据集4.2 调度器4.3 定义扩散模型4.4 创建扩散模型训练循环4.5 图像的生成方法1.建立一个管线方法2.写一个采样…

MySQL 字符集与乱码与collation设置的问题?

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友…

线扫相机DALSA--常见问题一:软件安装顺序

1.软件安装顺序 先安装:Sapera_LT_SDK,后安装Xtium-CL MX4驱动。 2.初次安装CamExpert,重启电脑后未找到相机 Settings(搜索协议)配置完毕后,需点击Detect Camera(一键查找相机)按钮,搜索相机。第一次查找相机耗时会略…

word行内插入mathtype 公式后行距变大解决办法

现象 word行内插入mathtype 公式后行距变大 解决方法 选中要进行操作的那些行,依次单击菜单命令“格式→段落”,打开“段落”对话框;单击“缩进和间距”选项卡,将间距的“段前”和“段后”都调整为“0行”;将“如果…

【广州华锐互动】城市水处理VR仿真实训平台

随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为我们带来了前所未有的沉浸式体验。在教育领域,VR技术的应用也日益广泛,为传统的教学模式带来了革命性的变革。本文将以城市水处理VR仿真实训…

Java集合类--List集合,Set集合,Map集合

集合可以看作一个容器,Java中提供了不同的集合类,这些类具有不同的存储对象的方式,同时提供了相应的方法,以便用户对集合进行遍历、添加、删除、查找指定的对象。 1.集合类概述: 集合类类似于数组,与数组不…

公网远程访问macOS本地web服务器

# 公网访问macOS本地web服务器【内网穿透】 文章目录 1. 启动Apache服务器2. 公网访问本地web服务2.1 本地安装配置cpolar2.2 创建隧道2.3 测试访问公网地址3. 配置固定二级子域名3.1 保留一个二级子域名3.2 配置二级子域名4. 测试访问公网固定二级子域名 以macOS自带的Apache…

局域网内两台电脑共享文件夹(通过网线直连共享数据)

文章目录 2.设置共享文件夹3.访问共享文件夹 1.将两台电脑置于同一局域网下 用网线将两台电脑连接关闭两台电脑防火墙将两台电脑IP地址设置在同一局域网下 测试是否在同一局域网下,使用ping命令 ping 192.168.0.122.设置共享文件夹 选择想要共享的文件夹&#xff…

基于单片机的智能电子鼻的设计

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式 文章目录 概要 一、智能电子鼻系统的设计方案1.1智能电子鼻系统的设计思路1.2智能电子鼻系统的设计流程图1.3智能电子鼻系统的硬件数…

Android系统的特性

目录 Android系统的特性 1. 显示布局 2. 数据存储 3. 网络 4. 信息 5. 浏览器 6. 编程语言支持 7. 媒体支持 8. 流媒体支持 9. 硬件支持 10. 多点触控 11.蓝牙 12. 多任务处理 13. 语音功能 14.无线共享功能 15. 截图功能 16. 跨平台 17. 应用程序的安全机制…

IT行业变成了夕阳行业

IT技术发展背景及历程 从2010年左右开始,大众创新,万众创业变成了一个经常看到的词语,在创业潮的带动下,同时刚好赶上了互联网的高速发展,一大批互联网创业公司应运而生,在这样的背景下,IT行业…

JVM进阶(3)

一)什么是垃圾? 垃圾指的是在应用程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾,如果不及时的针对内存中的垃圾进行清理,那么这些垃圾对象所占用的内存空间可能一直保留到应用程序结束,被保留的空间无法…

常见排序算法之冒泡排序

冒泡排序,英文名Bubble Sort,是一种相对基础的 交换排序方法。这种排序算法的名字来源于它操作的过程,可以类比为数列中的每一个元素都可以像小气泡一样,根据自身的大小一点一点向数组的一侧移动。具体到冒泡排序的工作原理&#…

即时编译器JIT

类编译加载执行过程 如下图所示,一个Java代码从编译到运行大抵会经历以下几个过程。具体每个过程笔者会在下文站展开讨论。 类编译 首先是类编译阶段,这个阶段会将Java文件变为class文件,这个class文件包含一个常量池和方法表集合&#xf…

Android数据对象序列化原理与应用

序列化与反序列化 序列化是将对象转换为可以存储或传输的格式的过程。在计算机科学中,对象通常是指内存中的数据结构,如数组、列表、字典等。通过序列化,可以将这些对象转换为字节流或文本格式,以便在不同的系统之间进行传输或存…

【机器学习可解释性】4.SHAP 值

机器学习可解释性 1.模型洞察的价值2.特征重要性排列3.部分依赖图4.SHAP 值5.SHAP 值 高级使用 正文 理解各自特征的预测结果? 介绍 您已经看到(并使用)了从机器学习模型中提取一般解释技术。但是,如果你想要打破模型对单个预测的工作原理? SHAP 值…