前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis起源

Redis起源

原创
作者头像
一个风轻云淡
发布2024-07-30 18:28:37
880
发布2024-07-30 18:28:37

从数据库发展史说起

1.单数据库实例

  • 时代背景:在互联网+大数据时代之前,企业的数据量相对较小,业务逻辑也相对简单。
  • 技术特点:单个数据库实例足以处理企业的内部信息管理系统需求,常见的关系型数据库如Oracle、MySQL、SQL Server等能够满足基本的存储和查询需求。

2. 缓存+单个数据库实例

  • 时代背景:随着系统访问用户的增多和数据量的增大,单个数据库实例开始出现性能瓶颈。
  • 技术特点:引入缓存技术,将热点数据存储在内存中,减少数据库的读取压力,提高系统响应速度。

3. 缓存+单个数据库实例+读写分离

  • 时代背景:数据量继续增大,数据库的写入和读取压力进一步增加。
  • 技术特点:实现数据库的读写分离,主数据库处理写操作,从数据库处理读操作,通过主从复制保持数据一致性。

4. 缓存+主从数据库集群+读写分离+分库分表

  • 时代背景:数据量再次增大,主数据库的写库压力成为新的瓶颈。
  • 技术特点
    • 引入数据库集群,通过主从复制和负载均衡提高系统的可用性和扩展性。
    • 实施分库分表策略,将数据分散存储在多个数据库实例中,降低单个数据库的压力。

5. NoSQL+主从数据库集群+读写分离+分库分表

  • 时代背景:互联网+大数据时代的到来,对数据库系统提出了更高的并发性、实时性和灵活性要求。
  • 技术特点
    • 引入NoSQL数据库(如MongoDB、Cassandra、Redis等),以支持高并发、高可用和灵活的数据模型。
    • 结合主从数据库集群、读写分离和分库分表,构建更加复杂和强大的数据存储解决方案。

Redis出现的背景

磁盘存储的原理

  • 磁道和扇区:磁盘由多个磁道组成,每个磁道被划分为多个扇区,每个扇区通常为512字节。这些是磁盘存储数据的基本单元。
  • 寻址速度:寻址速度是指磁盘臂移动到指定磁道所需的时间,通常以毫秒(ms)为单位。
  • 带宽:带宽是指磁盘读取或写入数据的速率,通常以每秒千兆字节(GB/s)来衡量。

内存存储的原理

  • 寻址速度:内存的寻址速度非常快,通常在纳秒(ns)级别。
  • 带宽:内存的带宽也比磁盘大得多,这使得内存的数据读写速度远超磁盘。

I/O成本问题

  • 大文件的挑战:当数据文件非常大时,从磁盘中读写数据会变得非常慢,尤其是随机读写操作。
  • 索引的挑战:为了有效管理大量数据,需要创建索引。然而,索引本身可能变得非常大,需要占用大量内存,否则会导致频繁的磁盘I/O操作。
  • 操作系统的最小读取单位:操作系统在读取磁盘数据时,通常以块(block)为单位进行,这个块的大小通常是4KB,这意味着即使只需要一个字节的数据,操作系统也会读取整个4KB块。

磁盘作为存储介质,I/O瓶颈是最大的问题,当文件越来越大,磁盘寻址和带宽远低于内存,磁盘比内存寻址慢了10w倍

诞生

2008年萨尔瓦多在开发一个进行网站实时统计软件项目(LLOOGG),项目的实时统计功能需要频繁的进行数据库的读写(对数据库的读写要求很高—数千次/s),MySQL满足不了项目的需求,萨尔瓦多就使用C语言自定义了一个数据存储系统—Redis。考虑到最终限制数据库性能的瓶颈在于磁盘,他自己去实现一个具有列表结构的数据库的原型,把数据放在内存而不是磁盘,这样可以大大地提升列表的 push 和 pop 的效率。萨尔瓦多发现这种思路确实能解决这个问题,所以用 C 语言重写了这个内存数据库,并且加上了持久化的功能。2009 年,Redis 横空出世了。从最开始只支持列表的数据库,到现在支持多种数据类型,并且提供了一系列的高级特性,Redis 已经成为一个在全世界被广泛使用的开源项目。后来萨尔瓦多不满足仅仅在LLOOGG这个项目中使用redis,就对redis进行产品化并进行开源,以便让更多的⼈能够使用。

LLOOGG.COM 提供的类似于访客的功能,它可以查看最多 10000 条的最新浏览记录。这样的话,它需要为每一个网站创建一个列表(List),不同网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除(先进先出)。

Redis主要发展史

Redis 1.0.0 Redis的第一个版本于2009年发布,主要提供了基本的键值对存储功能,包括设置键值、获取值、删除键等操作。此外,还提供了持久化功能,可以将数据存储到硬盘上。

Redis 2.0.0 在2011年,Redis发布了2.0版本,这个版本引入了新的数据类型,如哈希表和集合。哈希表可以存储多个键值对,而集合则可以存储不重复的元素。此外,还增加了事务功能和Lua脚本功能,提高了数据操作的灵活性和性能。

Redis 3.0.0 在2013年,Redis发布了3.0版本,这个版本引入了新的持久化方式——RDB和AOF。RDB通过生成数据快照的方式实现持久化,而AOF则通过记录操作日志的方式实现持久化。此外,还增加了发布订阅功能和Lua脚本的缓存机制。

Redis 4.0.0 在2015年,Redis发布了4.0版本,这个版本引入了集群功能,实现了数据的分布式存储和读取。此外,还增加了二进制安全、IPv6支持和流式API等功能。

Redis 5.0.0 在2018年,Redis发布了5.0版本,这个版本引入了字符串的修改操作、新的数据类型——有序集合和地理空间索引。此外,还增加了复制过滤和事务执行时支持对个别键的放弃等特性。

Redis 6.0.1

2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。

  • 提供了众多的新模块(modules)API
  • 提供了客户端缓存功能
  • 多线程 I/O 能力
  • 提升了 RDB 日志的加载速度
  • 修改了若干 bug 和一些优化

Redis 7.0

2022年4月27日,经历接近一年的开发、三个候选版本,Redis 7.0终于正式发布,这是Redis历史上改变最多的一个大版本,它不仅包含了50多个新命令,还有大量核心新特性与改进,这些不仅能够解决用户使用中的诸多问题,还进一步拓展了Redis的使用场景。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从数据库发展史说起
    • 1.单数据库实例
      • 2. 缓存+单个数据库实例
        • 3. 缓存+单个数据库实例+读写分离
          • 4. 缓存+主从数据库集群+读写分离+分库分表
            • 5. NoSQL+主从数据库集群+读写分离+分库分表
            • Redis出现的背景
              • 磁盘存储的原理
                • 内存存储的原理
                  • I/O成本问题
                    • 诞生
                    • Redis主要发展史
                    相关产品与服务
                    云数据库 Redis
                    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档