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的各种细节一一揭开他神秘的面纱,敬请期待。
更多干货文章,点击这里可以查看-->
某大厂高级软件工程师,代码爱好者 定期分享技术相关,热点时事,计算机实用技巧 有问题可在评论区回复或者联系我,用专业,程序员的思维带给你不一样的认知