专栏首页业余草Redis6 终于还是迎来了多线程版本!

Redis6 终于还是迎来了多线程版本!

今天是 5 月 3 号,五一假期已经过半,相信不少人假期余额已经不足了!昨天 Redis 6.0 版本正式发布,Redis 终于还是迎来了多线程!

Redis 6.0 版本,本来是预计在 2019 年底发布,可是由于改动太大,6.0.1 的正式版本直到昨天才正式推出。

Redis 6.0 版本的更新主要有 5 个部分。分别是:Redis 6.0-RC1、Redis 6.0-RC2、Redis 6.0-RC3、Redis 6.0-RC4、Redis 6.0.0 GA。

细节部分,根据我的统计,新功能特性加上修复的 Bug,大大小小超过 60 个。

其中最能引起大家轰动的功能应该是多线程 IO 功能。其实 Redis 自发布以来,并不是一个单线程程序。严格意义上来讲,Redis 并不是单线程。它也有后台线程在工作,处理一些较为缓慢的操作,例如无用连接的释放、大 key 的删除等等。

但是客户端命令的请求获取 (socket 读)、解析、执行、内容返回 (socket 写) 等等都是由一个线程处理,所有操作是一个个挨着串行执行的 (主线程),这也是 Redis 有 “单线程” 定义的来源。

单线程机制使得 Redis 内部实现的复杂度大大降低,Hash 的惰性 Rehash、Lpush 等等 “线程不安全” 的命令都可以无锁进行。

但是这套机制也使得 Redis 的 QPS 难以更上一层楼。Redis 本身的数据结构设计,内存管理已经做得接近尽善尽美。要 Redis 单机性能进一步提升,引入多线程并发处理任务是最直观的方案之一,和 memcached 对齐。

于是,Redis 的多线程版本,早就引起了广泛的讨论。

多线程特性在社区也被反复提了很久后,Redis 的作者 antirez 终于在 Redis 6 加入多线程。

因为读写网络的 read/write 系统调用在 Redis 执行期间占用了大部分 CPU 时间,如果把网络读写做成多线程的方式对性能会有很大提升。现在已经实现了第一版,write side 即回复客户端这部分已经完成了,并且去掉了主线程和 IO线程之间的互斥锁,采用 busy loop 的形式来等待 io 线程工作结束,这部分能够有 50% 的性能提升。

目前已经有国外网友针对单线程和多线程版本的 Redis 进行了性能测试。

从上图中可以看到,多线程的优势还是非常的明细,几乎有翻倍的提升。

除了多线程以外,本次升级在性能,协议,权限控制方面都有较大的改进。还是希望大家充分测试过一直在进行升级,以免影响到大家的生产系统!另外,值得一提的是,Redis 的执行命令操作内存的仍然是个单线程!

关于 Redis 6 版本的更多细节,推荐大家阅读:https://raw.githubusercontent.com/antirez/redis/6.0/00-RELEASENOTES。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis 的 7 个错误用法

    “最佳实践”已成为技术的一种比喻。当然,您可以使用给定的工具执行某些操作,但使用这个工具真的是个好主意吗?这个话题一次又一次出现说明了我们使用工具的灵活性。最佳...

    业余草
  • 如何将 Redis 用于微服务通信的事件存储

    原文链接:https://www.xttblog.com

    业余草
  • Redis从入门到精通

    原文链接:https://url.cn/5vUhnKI

    业余草
  • Redis 深度历险:核心原理与应用实践

    Redis 是互联网技术架构在存储系统中使用最为广泛的中间件,它也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的、竞争激烈的大型互联...

    黄泽杰
  • Redis简介

    用户1112962
  • Redis:基础学习资料 PDF 版下载

    随着Web 2.0的蓬勃发展,网站数据快速增长,人们对高性能读写的需求越来越多,关系数据库越来越不能适应相关的存储需求……

    用户4143945
  • 【redis学习】高级键管理

    为了更有效地在应用程序中使用 Redis ,我们需要理解 Redis 是如何存储键的,并了解用于操作 Redis 实例中键空间的命令。

    看、未来
  • 告诉你 Redis 是一个牛逼货

    Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list...

    芋道源码
  • Redis 创始人宣布退居二线:我写代码只是为了表达自己!

    前几日,Redis 创始人 Salvatore Sanfilippo 在他的个人博客(http://antirez.com/)上宣布将结束自己的 Redis 之...

    程序猿DD
  • 如何在云开发Cloudbase中使用Redis?

    云开发 Cloudbase 是腾讯云为移动开发者提供的云原生一体化应用开发平台,可用于开发多种客户端,它帮助开发者统一构建和管理资源,免去了应用开发过程中繁琐的...

    腾讯云开发TCB

扫码关注云+社区

领取腾讯云代金券