您当前的位置:首页 > 电脑百科 > 数据库 > Redis

无敌到寂寞!Redis进军磁盘存储!

时间:2023-10-24 15:37:47  来源:51CTO  作者:

撰稿丨千山

在高手林立的数据库江湖,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:他们不是内存数据库。我们与所有其他排名前十的数据库一起使用,但我们并没有真正与它们竞争。”

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

参考链接:

https://www.theregister.com/2023/10/19/redis_disk_support/

https://news.ycombinator.com/item?id=37940484

https://levelup.gitconnected.com/why-redis-is-miraculously-optimized-5d813e02e62b



Tags:Redis   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Redis 不再 “开源”,未来采用 SSPLv1 和 RSALv2 许可证
Redis 官方于21日宣布修改开源协议 —— 未来所有版本都将使用 “源代码可用” 的许可证 (source-available licenses)。具体来说,Redis 将不再遵循 BSD 3-Clause...【详细内容】
2024-03-27  Search: Redis  点击:(11)  评论:(0)  加入收藏
Redis“叛逃”开源,得罪了几乎所有人
内存数据库供应商Redis近日在开源界砸下了一块“巨石”。Redis即将转向双许可模式,并实施更为严格的许可条款。官方对此次变更的公告直截了当:从Redis 7.4版本开始,Redis将在Re...【详细内容】
2024-03-25  Search: Redis  点击:(9)  评论:(0)  加入收藏
如何使用 Redis 实现消息队列
Redis不仅是一个强大的内存数据存储系统,它还可以用作一个高效的消息队列。消息队列是应用程序间或应用程序内部进行异步通信的一种方式,它允许数据生产者将消息放入队列中,然...【详细内容】
2024-03-22  Search: Redis  点击:(17)  评论:(0)  加入收藏
Redis不再 “开源”
Redis 官方今日宣布修改开源协议 —— 未来所有版本都将使用 “源代码可用” 的许可证 (source-available licenses)。具体来说,Redis 将不再遵循 BSD 3-Clause 开...【详细内容】
2024-03-21  Search: Redis  点击:(8)  评论:(0)  加入收藏
在Redis中如何实现分布式锁的防死锁机制?
在Redis中实现分布式锁是一个常见的需求,可以通过使用Redlock算法来防止死锁。Redlock算法是一种基于多个独立Redis实例的分布式锁实现方案,它通过协调多个Redis实例之间的锁...【详细内容】
2024-02-20  Search: Redis  点击:(47)  评论:(0)  加入收藏
手动撸一个 Redis 分布式锁
大家好呀,我是楼仔。今天第一天开工,收拾心情,又要开始好好学习,好好工作了。对于使用 Java 的小伙伴,其实我们完全不用手动撸一个分布式锁,直接使用 Redisson 就行。但是因为这些...【详细内容】
2024-02-19  Search: Redis  点击:(39)  评论:(0)  加入收藏
工作中Redis有哪些好用的运维工具
工作中使用 Redis 时,如果大家公司没有专业运维,可能开发人员就会面临这些运维的工作,包括 Redis 的运行状态监控,数据迁移,主从集群、切片集群的部署和运维等等。本文我就从这三...【详细内容】
2024-02-06  Search: Redis  点击:(55)  评论:(0)  加入收藏
深入Go底层原理,重写Redis中间件实战
Go语言以其简洁、高效和并发性能而闻名,深入了解其底层原理可以帮助我们更好地利用其优势。在本文中,我们将探讨如何深入Go底层原理,以及如何利用这些知识重新实现一个简单的Re...【详细内容】
2024-01-25  Search: Redis  点击:(66)  评论:(0)  加入收藏
批量执行Redis命令的四种方式!
前言在我们的印象中Redis命令好像都是一个个单条进行执行的,如果有人问你如何批量执行Redis命令,你能回答的上吗,或者说能答出几种方式呢?最容易想到的是Redis的一些批量命令,例...【详细内容】
2024-01-17  Search: Redis  点击:(58)  评论:(0)  加入收藏
Redis 实现多规则限流的思考与实践
市面上很多介绍redis如何实现限流的,但是大部分都有一个缺点,就是只能实现单一的限流,比如1分钟访问1次或者60分钟访问10次这种,但是如果想一个接口两种规则都需要满足呢,我们的...【详细内容】
2024-01-03  Search: Redis  点击:(109)  评论:(0)  加入收藏
▌简易百科推荐
Redis 不再 “开源”,未来采用 SSPLv1 和 RSALv2 许可证
Redis 官方于21日宣布修改开源协议 —— 未来所有版本都将使用 “源代码可用” 的许可证 (source-available licenses)。具体来说,Redis 将不再遵循 BSD 3-Clause...【详细内容】
2024-03-27  dbaplus社群    Tags:Redis   点击:(11)  评论:(0)  加入收藏
Redis“叛逃”开源,得罪了几乎所有人
内存数据库供应商Redis近日在开源界砸下了一块“巨石”。Redis即将转向双许可模式,并实施更为严格的许可条款。官方对此次变更的公告直截了当:从Redis 7.4版本开始,Redis将在Re...【详细内容】
2024-03-25    51CTO  Tags:Redis   点击:(9)  评论:(0)  加入收藏
如何使用 Redis 实现消息队列
Redis不仅是一个强大的内存数据存储系统,它还可以用作一个高效的消息队列。消息队列是应用程序间或应用程序内部进行异步通信的一种方式,它允许数据生产者将消息放入队列中,然...【详细内容】
2024-03-22  后端Q  微信公众号  Tags:Redis   点击:(17)  评论:(0)  加入收藏
Redis不再 “开源”
Redis 官方今日宣布修改开源协议 —— 未来所有版本都将使用 “源代码可用” 的许可证 (source-available licenses)。具体来说,Redis 将不再遵循 BSD 3-Clause 开...【详细内容】
2024-03-21  OSC开源社区    Tags:Redis   点击:(8)  评论:(0)  加入收藏
在Redis中如何实现分布式锁的防死锁机制?
在Redis中实现分布式锁是一个常见的需求,可以通过使用Redlock算法来防止死锁。Redlock算法是一种基于多个独立Redis实例的分布式锁实现方案,它通过协调多个Redis实例之间的锁...【详细内容】
2024-02-20  编程技术汇    Tags:Redis   点击:(47)  评论:(0)  加入收藏
手动撸一个 Redis 分布式锁
大家好呀,我是楼仔。今天第一天开工,收拾心情,又要开始好好学习,好好工作了。对于使用 Java 的小伙伴,其实我们完全不用手动撸一个分布式锁,直接使用 Redisson 就行。但是因为这些...【详细内容】
2024-02-19  楼仔  微信公众号  Tags:Redis   点击:(39)  评论:(0)  加入收藏
工作中Redis有哪些好用的运维工具
工作中使用 Redis 时,如果大家公司没有专业运维,可能开发人员就会面临这些运维的工作,包括 Redis 的运行状态监控,数据迁移,主从集群、切片集群的部署和运维等等。本文我就从这三...【详细内容】
2024-02-06  waynaqua    Tags:Redis   点击:(55)  评论:(0)  加入收藏
批量执行Redis命令的四种方式!
前言在我们的印象中Redis命令好像都是一个个单条进行执行的,如果有人问你如何批量执行Redis命令,你能回答的上吗,或者说能答出几种方式呢?最容易想到的是Redis的一些批量命令,例...【详细内容】
2024-01-17  小许code  微信公众号  Tags:Redis命令   点击:(58)  评论:(0)  加入收藏
Redis 实现多规则限流的思考与实践
市面上很多介绍redis如何实现限流的,但是大部分都有一个缺点,就是只能实现单一的限流,比如1分钟访问1次或者60分钟访问10次这种,但是如果想一个接口两种规则都需要满足呢,我们的...【详细内容】
2024-01-03  架构精进之路  微信公众号  Tags:Redis   点击:(109)  评论:(0)  加入收藏
一站式Redis解决方案
Redis是一个高效的内存数据库,它支持包括String、List、Set、SortedSet和Hash等数据类型的存储,在Redis中通常根据数据的key查询其value值,Redis没有模糊条件查询,在面对一些需...【详细内容】
2024-01-01  大雷家吃饭    Tags:Redis   点击:(66)  评论:(0)  加入收藏
站内最新
站内热门
站内头条