Redis系列之前世今生(一)(redisi)
mhr18 2024-11-02 11:57 20 浏览 0 评论
Redis系列之前世今生
前言
有一位程序员的大佬说过
编程就像炒菜,而缓存就像是调味品。
仔细想想,好像没有调味品的饭也能吃,但肯定没有用了调味品那么好吃。(想想你的菜里没有盐!),缓存就是我们程序中的调味品。
而Redis,作为一个现在主流的缓存型key-value数据库,活跃在各大公司和各大平台上的程序之中,处处都能看到他的身影,但大家可能从未了解过他的发展故事,今天就带大家一起看看Redis的前世今生。
诞生的故事
这大概要从一个2007年的故事开始说起。
当时有一个意大利西西里岛的小哥,名叫Salvatore Sanfilippo(推特 @antirez),在2007年和朋友创建了一个访客信息网站 LLOOGG.COM,这个网站提供的服务其实就是统计各个网站的各种信息比如访客的 IP、操作系统、浏览器、使用的搜索关键词、所在地区、访问的网页地址等等。
LLOOGG.COM
LLOOGG.COM的底层逻辑就是把收集到的访客的信息发送到这些网站统计的服务器,然后网站的用户就可以查看数据了。
LLOOGG.COM 可以查看最多 10000 条的最新浏览记录。这样的话,它需要为每一个网站创建一个列表(List),不同网站的访问记录进入到不同的列表。如果列表的长度超过了用户指定的长度,它需要把最早的记录删除。(先进先出)
LLOOGG.com 的负载问题
随着 LLOOGG.com 的用户越来越多,LLOOGG.com要维护的列表数量也越来越多,要执行的推入和弹出操作也越来越多。LLOOGG.com 当时使用 MySQL 数据库,而 MySQL 每次执行推入和弹出操作都要进行硬盘写入和读取,程序的性能严重受制于硬盘 I/O。最终,LLOOGG.com 所使用的MySQL再也没办法在当时的流量情况下处理新增的大量负载,antirez决定在现有硬件的基础上,通过提升列表操作的性能来解决负载问题。
Redis 的诞生
为了解决 LLOOGG.com 的负载问题,antirez 决定自己写一个具有列表结构的内存数据库原型。这个数据库原型支持O(1) 复杂的推入和弹出操作,并且将数据储存在内存而不是硬盘,所以程序的性能不会受到硬盘 I/O 限制,可以以极快的速度 执行针对列表的推入和弹出操作。于是 antirez 使用C 语言写了这个内存数据库,并给它加上了持久化功能,2009年2月26日Redis(Remote Dictionary Server 远程字典服务)就此诞生!
演进
Redis从诞生之日从未停止过发展,直到我们现在的使用有过无数版本的更迭,这里我挑选几个重大的转折点向大家介绍:
- 2009年Redis诞生
- 2012年发布了Redis2.6版本,正式的支持lua脚本
- 2015年发布了Redis3.0版本,官方提出了分布式实现Redis Cluster
- 2017年发布了Redis4.0版本,提供了RDB-AOF混合持久化格式
- 2018年发布了Redis5.0版本,对核心代码进行了大范围的重构
- 2020年发布了Redis6.0版本,Redis引入了多线程的概念,使用多线程来处理网络数据的读写和协议解析
- 2022年发布了Redis7.0版本,提供了不同于lua表达式的RedisFunctions功能
未完待续...
Redis 现在怎么样了?
- 经过长时间的发展,Redis 现在已经拥有极其丰富的API,帮助使用Redis
- 在github上有56.4K的Star!
- 支持非常快速的接入,整个安装流程非常快速
- 出现了类似RDM等一系列Redis的辅助工具
- 等等..
各大厂商的使用
- Twitter 使用 Redis 来储存用户时间线(user timeline)。
- StackOverflow 使用 Redis 来进行缓存和消息分发。
- Pinterest 使用 Redis 来构建关注模型(follow model)和兴趣图谱(interest graph)。
- Github 使用 Redis 作为持久化的键值对数据库,并使用 Resque 来实现消息队列。
- 新浪微博使用 Redis 来实现计数器、反向索引、排行榜、消息 队列,并储存用户关系。
- 知乎使用 Redis 来进行计数、缓存、消息分发和任务调度。
- ...
结尾
Redis的历史今天就介绍到这里了,截止2022年Redis已经成为了程序开发中不可缺少的一部分。未来我会针对Redis的各种细节一一揭开他神秘的面纱,敬请期待。
更多干货文章,点击这里可以查看-->
作者介绍
- 某大厂高级软件工程师,代码爱好者
- 定期分享技术相关,热点时事,计算机实用技巧
- 有问题可在评论区回复或者联系我,用专业,程序员的思维带给你不一样的认知
更多知识分享,欢迎关注~
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)