Redis进军磁盘存储

news2024/11/17 22:36:49

目录

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

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

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

相关文章

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

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

mac 查看GPU使用

首先搜索活动监视器 然后 点击窗口->gpu历史记录 记住不是立马出结果,而是 需要等半分钟左右的

Project Costs

/*** 初始化象棋的棋子,正常情况加载双方所有棋子,残局演示加载剩余棋子,按坐标位置摆放* * 【费用】* 因甲方要求产生工作量计算费用;新增、修改、删除需求* 因乙方生产缺陷工作量不计费用;缺陷、延误* * 来说个一个栗…

Istio 运行错误 failed to update resource with server-side apply for obj 问题解决

Istio 环境 kubernetes version: v1.18.2 istio version: v1.10.0运行之后 istio-operator 的日志就抛出下面错误,而且会一直重启 # kubectl get iop -A NAMESPACE NAME REVISION STATUS AGE istio-system iop-pro-cluster…

Helplook VS Document360:哪个更适合知识库管理?

在当今快速发展的业务环境中,高效的知识库管理对于组织有效地组织和监督其在线文档至关重要。Document360和HelpLook是两个强大的软件解决方案,在这一领域表现出色。在这篇博文中,我们将比较 Document360 和 HelpLook,对它们的特性…

操作系统缓冲区管理(单缓冲,双缓冲,循环缓冲,缓冲池)

目录 1.什么是缓冲区1.有什么作用 2.单缓冲1.常考题型:计算每处理一块数据平均需要多久1.假设输入时间T大于处理时间C2.假设输入时间T小于处理时间C 2.单缓冲通信 3.双缓冲1.计算数据处理的时间1. 假设T>CM2.假设T<CM 2.双缓冲通信 4.循环缓冲5.缓冲池1.共用缓冲区2.工作…

java版直播商城平台规划及常见的营销模式 电商源码/小程序/三级分销+商城免费搭建

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

第十三章---枚举类型与泛型

一&#xff0c;枚举类型 1.使用枚举类型设置常量 设置常量时&#xff0c;我们通常将常量放置在接口中&#xff0c;这样在程序中就可以直接使用。该常量稚因为在接口中定义常量时&#xff0c;该常量的修饰符为 final 与 static。 public interface Constants ( public static …

C#两个表多条件关联写法

文章目录 C#两个表多条件关联写法两个表实体类准备实体类数据初始化第一种 sql的左关联第二种相当于sql的 INNER JOIN写法一&#xff1a;FROM a FROM b where 多条件关联写法二&#xff1a; FROM JOIN INTO写法三&#xff1a; FROM JOIN 省略into C#两个表多条件关联写法 两个…

order by数据过多引起的cpu飙升

测试环境 1.目前数据库类型为pg数据库2.目前数据库业务为共享数据库,为减少其他业务对本次测试的影响,故选在业务空闲时间执行3.服务器性能为8C 32GB 500GB硬盘 原程序测试结果 优化后程序结果 出现原因 当数据量大时&#xff0c;order by排序操作会消耗大量的CPU资源&#…

Android登录注册页面(第三次作业)

第三次作业 - 登录注册页面 题目要求 嵌套布局。使用线性布局的嵌套结构&#xff0c;实现登录注册的页面。&#xff08;例4-3&#xff09; 创建空的Activity 项目结构树如下图所示&#xff1a; 注意&#xff1a;MainActivity.java文件并为有任何操作&#xff0c;主要功能集中…

Python---continue关键字对while...else结构的影响(只是跳过某次,之后继续正常结束,执行else)

回顾&#xff1a; 在Python循环中&#xff0c;经常会遇到两个常见的关键词&#xff1a;break 与 continue break&#xff1a;代表终止整个循环结构 continue&#xff1a;代表中止当前本次循环&#xff0c;继续下一次循环 break&#xff1a; 英 /breɪk/ v. 打破&#xff…

供应 JOSEF约瑟 电源监视继电器 HJZZ-92/2A HJZZ-91 DC220V

品牌&#xff1a;JOSEF约瑟名称:监视综合继电器型号:HJZZ-91、HJZZ-92/2A额定电压:48,110,220VDC/110,220,380VAC功率消耗:≤10W触点容量:250V5A 系列型号&#xff1a; HJZZ-91分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/1分闸、合闸、电源监视综合装置&#xff1b;…

SpringCore 完整学习教程1,入门级别

1. SpringApplication SpringApplication类提供了一种方便的方式来引导从main()方法启动的Spring应用程序。在很多情况下&#xff0c;你可以委托给静态的SpringApplication.run方法&#xff0c;如下面的例子所示: import org.springframework.boot.SpringApplication; import…

PgSQL-执行器机制-Unique算子

PgSQL-执行器机制-Unique算子 PgSQL中输出去重的元组有多种方法&#xff0c;比如通过HashAgg或者GroupAgg。这里我们介绍第三种方法&#xff0c;通过Unique算子来完成这个功能。当然语句上可以是&#xff1a;select distinct(id1) from t; 1、ExecUnique 执行器执行算子的函数都…

3.加载天地图

愿你出走半生,归来仍是少年&#xff01; 上一篇文章构建出来基础的白球&#xff0c;现在需要给它添加底图啦。先上最常用的天地图。 1.天地图 天地图做过Gis开发的应该都知道&#xff0c;需要先申请key然后才能使用。然后天地图是基于XYZ的标准进行切片的&#xff0c;所以直接…

FreeRTOS 延时函数和软件定时器 详解

目录 什么是延时函数&#xff1f; 1.延时函数分类 2.vTaskDelay 与 HAL_Delay 的区别 什么是定时器&#xff1f; 1.软件定时器优缺点 2.软件定时器原理 3.软件定时器相关配置 4.单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器…

C++STL----list的使用

文章目录 list简介list的使用默认成员函数的使用list容器元素的修改front和backpush_front和pop_frontpush_back和pop_backinserterase list迭代器begin和endrbegin和rend list大小控制resizeclear list操作函数sortspliceremoveremove_ifuniquemergereverseassign CSTL----lis…

CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)

原文网址&#xff1a;CloudFlare系列--使用第三方来自定义CDN的IP(笨牛详细版)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用自定义节点来提高CloudFlare的CDN节点的访问速度。 CloudFlare的CDN很强大&#xff0c;可以防DDos等攻击&#xff0c;也可以提高国外服务器的访…

假如我有一台服务器,我会让它提供三种服务

一、提供照片上传、存储和下载服务 随着移动互联网时代的持续快速发展&#xff0c;PC互联网日益势微&#xff0c;各大互联网门户网站的博客、空间也跟着凋零&#xff0c; 作为博客、空间的标配功能的相册也随之被关闭。 2019年3月6日网易相册发布停运公告并于当年5月8日正式停…