前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis6 终于还是迎来了多线程版本!

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

作者头像
业余草
发布2020-05-07 15:03:20
1.2K0
发布2020-05-07 15:03:20
举报
文章被收录于专栏:业余草业余草

今天是 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。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今天是 5 月 3 号,五一假期已经过半,相信不少人假期余额已经不足了!昨天 Redis 6.0 版本正式发布,Redis 终于还是迎来了多线程!
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档