最新要闻
- 华星创业:公司投资成都司元主要系业务上考虑|全球最新
- 迪士尼《小美人鱼》最新剧照:爱丽儿与六位人鱼姐姐集体亮相 天天新资讯
- 天天热头条丨疯狂对标比亚迪宋 吉利银河L7首车下线:CLTC能跑1300多公里
- 天天日报丨青春回归!腾讯音游《节奏大师》终测开启:安卓不限参与名额
- 苹果、高通靠边站!5G标准必要专利全球排名:华为第一 国产厂商无敌 环球通讯
- 环球快看:消息称特斯拉准备从上海向加拿大出口Model Y:系首次出口北美
- 火山的女儿神射手结局怎么达成
- 河北省取暖费发放标准2018_2019_河北省取暖费发放标准2018_全球资讯
- 【快播报】安全头盔是个宝 骑乘人都要佩戴好
- 知名男演员李光洁跟电诈团伙打36分钟电话:半天才发现破绽
- 当前时讯:减重近一吨 我国首辆镁合金轻量化挂车交付
- 手机/PC双端互通!米哈游《崩坏:星穹铁道》预下载开启:4月26日上线
- 实拍“星舰”发射失败后现场:发射台报废、地面影像设备尽毁|世界焦点
- 最强拍照折叠屏!小米MIX Fold 3规格曝光:用上一英寸IMX989
- 打哈欠真的会传染吗 环球快看点
- 科创板首批“重大违法退”锁定,注册制下退市生态加速构建 世界独家
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Redis Plus 来了,性能炸裂! 当前短讯
来源:https://developer.aliyun.com/article/705239
1 什么是KeyDB?
KeyDB是Redis的高性能分支,专注于多线程,内存效率和高吞吐量。除了多线程之外,KeyDB还具有仅在Redis Enterprise中可用的功能,例如Active Replication,FLASH存储支持以及一些根本不可用的功能,例如直接备份到AWS S3。
(相关资料图)
KeyDB与Redis协议,模块和脚本保持完全兼容性。这包括脚本和事务的原子性保证。由于KeyDB与Redis开发保持同步,因此KeyDB是Redis功能的超集,从而使KeyDB取代了现有Redis部署。
在相同的硬件上,KeyDB每秒可以执行的查询数量是Redis的两倍,而延迟却降低了60%。Active-Replication简化了热备用故障转移,使您可以轻松地在副本上分配写操作并使用基于TCP的简单负载平衡/故障转移。KeyDB的高性能可让您在更少的硬件上做更多的事情,从而降低了运营成本和复杂性。
在此处查看完整的基准测试结果和设置信息:
https://docs.keydb.dev/blog/2019/10/07/blog-post/
2 走进KeyDB
KeyDB项目是从redis fork出来的分支。众所周知redis是一个单线程的kv内存存储系统,而KeyDB在100%兼容redis API的情况下将redis改造成多线程。
项目git地址:
https://github.com/JohnSully/KeyDB
网上公开的技术细节比较少,本文基本是通过阅读源码总结出来的,如有错漏之处欢迎指正。
推荐一个开源免费的 Spring Boot 最全教程:
https://github.com/javastacks/spring-boot-best-practice
多线程架构
线程模型
KeyDB将redis原来的主线程拆分成了主线程和worker线程。每个worker线程都是io线程,负责监听端口,accept请求,读取数据和解析协议。如图所示:
KeyDB使用了SO_REUSEPORT
特性,多个线程可以绑定监听同个端口。
每个worker线程做了cpu绑核,读取数据也使用了SO_INCOMING_CPU
特性,指定cpu接收数据。
解析协议之后每个线程都会去操作内存中的数据,由一把全局锁来控制多线程访问内存数据。
主线程其实也是一个worker线程,包括了worker线程的工作内容,同时也包括只有主线程才可以完成的工作内容。在worker线程数组中下标为0的就是主线程。
主线程的主要工作在实现serverCron
,包括:
- 处理统计
- 客户端链接管理
- db数据的resize和reshard
- 处理aof
- replication主备同步
- cluster模式下的任务
链接管理
在redis中所有链接管理都是在一个线程中完成的。在KeyDB的设计中,每个worker线程负责一组链接,所有的链接插入到本线程的链接列表中维护。链接的产生、工作、销毁必须在同个线程中。每个链接新增一个字段
int iel; /* the event loop index we"re registered with */
用来表示链接属于哪个线程接管。
KeyDB维护了三个关键的数据结构做链接管理:
clients_pending_write
:线程专属的链表,维护同步给客户链接发送数据的队列clients_pending_asyncwrite
:线程专属的链表,维护异步给客户链接发送数据的队列clients_to_close
:全局链表,维护需要异步关闭的客户链接
分成同步和异步两个队列,是因为redis有些联动api,比如pub/sub
,pub之后需要给sub的客户端发送消息,pub执行的线程和sub的客户端所在线程不是同一个线程,为了处理这种情况,KeyDB将需要给非本线程的客户端发送数据维护在异步队列中。
同步发送的逻辑比较简单,都是在本线程中完成,以下图来说明如何同步给客户端发送数据
如上文所提到的,一个链接的创建、接收数据、发送数据、释放链接都必须在同个线程执行。异步发送涉及到两个线程之间的交互。KeyDB通过管道在两个线程中传递消息:
int fdCmdWrite; //写管道int fdCmdRead; //读管道
本地线程需要异步发送数据时,先检查client是否属于本地线程,非本地线程获取到client专属的线程ID,之后给专属的线程管到发送AE_ASYNC_OP::CreateFileEvent
的操作,要求添加写socket事件。专属线程在处理管道消息时将对应的请求添加到写事件中,如图所示:
redis有些关闭客户端的请求并非完全是在链接所在的线程执行关闭,所以在这里维护了一个全局的异步关闭链表。
锁机制
KeyDB实现了一套类似spinlock的锁机制,称之为fastlock。
fastlock的主要数据结构有:
struct ticket{ uint16_t m_active; //解锁+1 uint16_t m_avail; //加锁+1};struct fastlock{ volatile struct ticket m_ticket; volatile int m_pidOwner; //当前解锁的线程id volatile int m_depth; //当前线程重复加锁的次数};
使用原子操作__atomic_load_2
,__atomic_fetch_add
,__atomic_compare_exchange
来通过比较m_active=m_avail
判断是否可以获取锁。fastlock提供了两种获取锁的方式:
- try_lock:一次获取失败,直接返回
- lock:忙等,每
1024 * 1024
次忙等后使用sched_yield
主动交出cpu,挪到cpu的任务末尾等待执行。
在KeyDB中将try_lock
和事件结合起来,来避免忙等的情况发生。每个客户端有一个专属的lock,在读取客户端数据之前会先尝试加锁,如果失败,则退出,因为数据还未读取,所以在下个epoll_wait
处理事件循环中可以再次处理。
Active-Replica
KeyDB实现了多活的机制,每个replica可设置成可写非只读,replica之间互相同步数据。主要特性有:
- 每个replica有个uuid标志,用来去除环形复制
- 新增加rreplay API,将增量命令打包成rreplay命令,带上本地的uuid
- key,value加上时间戳版本号,作为冲突校验,如果本地有相同的key且时间戳版本号大于同步过来的数据,新写入失败。采用当前时间戳向左移20位,再加上后44位自增的方式来获取key的时间戳版本号。
参考文档:https://docs.keydb.dev/docs/commands
近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!
关键词:
-
Redis Plus 来了,性能炸裂! 当前短讯
来源:https: developer aliyun com article 7052391什么是KeyDB?KeyDB是Redis的高性能分支,专注于多线
来源: -
FBEC大会 | 瑞云科技 CTO 赵志杰:元宇宙时代的基础设施——实时云渲染|天天百事通
FBEC主会场C:相信的力量——FBEC全球元宇宙CEO峰会由武汉东湖新技术开发区管理委员会与陀螺科技联合主...
来源: Redis Plus 来了,性能炸裂! 当前短讯
产品研发流程规范-参考|每日热文
FBEC大会 | 瑞云科技 CTO 赵志杰:元宇宙时代的基础设施——实时云渲染|天天百事通
华星创业:公司投资成都司元主要系业务上考虑|全球最新
迪士尼《小美人鱼》最新剧照:爱丽儿与六位人鱼姐姐集体亮相 天天新资讯
天天热头条丨疯狂对标比亚迪宋 吉利银河L7首车下线:CLTC能跑1300多公里
天天日报丨青春回归!腾讯音游《节奏大师》终测开启:安卓不限参与名额
苹果、高通靠边站!5G标准必要专利全球排名:华为第一 国产厂商无敌 环球通讯
环球快看:消息称特斯拉准备从上海向加拿大出口Model Y:系首次出口北美
火山的女儿神射手结局怎么达成
河北省取暖费发放标准2018_2019_河北省取暖费发放标准2018_全球资讯
精彩看点:「教程」天气预警 API 详解:申请密钥到接入代码一气呵成!
热消息:【译】如何在 Visual Studio 中调试异步代码
chatgpt~插件介绍
为什么你永远不应该在CSS中使用px来设置字体大小-今日关注
Natasha 编译单元(四)_世界快资讯
【快播报】安全头盔是个宝 骑乘人都要佩戴好
知名男演员李光洁跟电诈团伙打36分钟电话:半天才发现破绽
当前时讯:减重近一吨 我国首辆镁合金轻量化挂车交付
手机/PC双端互通!米哈游《崩坏:星穹铁道》预下载开启:4月26日上线
实拍“星舰”发射失败后现场:发射台报废、地面影像设备尽毁|世界焦点
最强拍照折叠屏!小米MIX Fold 3规格曝光:用上一英寸IMX989
打哈欠真的会传染吗 环球快看点
科创板首批“重大违法退”锁定,注册制下退市生态加速构建 世界独家
Anki 无需网络如何同步 手机和电脑进行同步
盘点| 有哪些比较新的好用的React Native 开发工具? 天天最新
快看点丨技术干货|如何利用 ChunJun 实现数据实时同步?
当前快看:python工具模块介绍-time 时间访问和转换
厦门钨业于云南新设科技发展子公司:企查查APP显示,近日,云南厦钨科技发展有限公司成立,注册资本100万元,经营范围包含 全球热文
全球热头条丨电池原材料价格大跌坑到宁王?宁德时代回应
天天快讯:每小时1000公里 !我国“高速飞车”研制取得新进展
每日热讯!马斯克请回来的4D成像雷达 百度小米蔚来也押注了:战况很激烈
《天宫之镜》上线:首次慢直播中国空间站-天天实时
每日焦点!同飞股份4月24日盘中涨幅达5%
焦点报道:C#用dynamic一行代码实现反射操作
最后时刻单防福克斯!追梦:如果这让你感觉不好 我很抱歉
北京国际电影节有哪些看点?
最新:美国迪士尼乐园13米巨龙起火 观众还以为是新节目
全球速看:酷派COOL30 Pro来了:LCD水滴屏+2.4GHz八核CPU
特斯拉市值一周蒸发逾5000亿 分析师补刀:还能跌85%
一加Ace 2原神定制礼盒太火爆!3699元首销售罄
新资讯:全球连线|菲律宾榴莲加速进军中国
SpringSecurity框架教程-简介与SpringSecurity框架教程-入门案例准备工作_每日简讯
每日视讯:顶象推出应用隐私合规检测服务
如何用 DataTester 设计并创建可视化实验-全球微速讯
焦点观察:国泰4月24日起送2.7万张免费机票,附参加方法
天天热文:漯河郾城区新店镇:打好“三张牌” 聚力招商引资新突破
今日热闻!14款新车哪个最拉胯?中保研新一轮测试成绩公布:结果惊人
简讯:公司招聘运营称已婚双休未婚单休 求职者称歧视:网友热议没啥问题
宏碁发布史上最强迷你机圣盾X:i9-13900KS、RTX 4090无可挑剔|世界看热讯
微星推新BIOS限制7000X3D系列CPU电压 避免CPU毁损风险|天天视讯
世界快看点丨汽车级磷酸铁锂 针刺不起火!绿联、比亚迪户外电源3699元新低
新恒结衣的垣怎么念?新垣结衣个人介绍
中国第二大城市是哪个?中国第二大城市介绍
批准为荷是什么意思?批准为荷和批准为盼哪个更好?
孔雀蓝是什么颜色?孔雀蓝的rgb色值是多少?
任务管理器中的进程是什么意思?任务管理器中的进程怎么关闭?
MP3音乐文件破损是什么原因?MP3音乐文件破损怎么修复?
高血压的症状表现有哪些?高血压怎么调理才能彻底根除?
痛风一般有哪些症状?痛风会导致哪些严重后果?
可以用鼠标在电脑上写字的软件有哪些?怎么用鼠标拖动改变工作表标签的先后位置?
千与千寻迅雷下载 720p_千与千寻迅雷下载链接|环球快讯
Linux下Nginx安装证书_世界热门
2023最新kali安装教程 头条
分享一波免费可用的 API 大全|每日视点
笔记本怎么下载软件到桌面?笔记本怎么下载播放器?
环球今亮点!吃烧烤不应成为一场“战斗” 淄博在激流中需要保持清醒
世界球精选!一季度全国城镇新增就业297万人
环球滚动:景区完成特种设备隐患排查
全球热资讯!努比亚Z50把骁龙8 Gen2干到2500以内!倪飞:这才是旗舰焊门员
30寸巨屏+怀挡!别克全新君越内饰亮相:整车改头换面|报道
普通百姓也能用卫星遥感技术!这款手机APP快来了
全球观速讯丨李想:个人本意反对哨兵模式、延迟数月推出因考虑兼容车型
买了都说好!楠木之舟一体成型EVA拖鞋狂促:立省25元_环球视讯
归母净利润增幅超125% 铝合金精密压铸件龙头企业美利信登陆A股 最新快讯
使用nodejs编写api接口并部署到服务器上-前沿资讯
防伪底纹制作教程(防伪底纹制作)
Mysteel:家电原材料周报(4.17-4.21) 世界焦点
全球观焦点:比亚迪驱逐舰07动力信息曝光:加速7.9秒、亏电百公里油耗3.9升
每日报道:五一民宿现涨价毁约潮 房东各种奇葩借口:专家称构成欺诈可退一赔三
【新要闻】淄博烧烤小饼遭疯抢:老板因太忙暴瘦20斤
三摄镜头模组瞩目!大疆Mavic 3 Pro外观细节现身
世界聚焦:首次!中国绘制火星全球影像图发布:国内名镇上火星
成分股是什么意思在哪里能看到_成分股是什么意思-焦点精选
今日热文:年薪70万的全栈需要什么技能?
今日热门!证监会承接企业债发行审核职责落地
播报:“在香港生仔要够胆”?香港为“生育率全球最低”想招
小米空调突破性技术创新:获评国际领先
降价800元!华为Mate 50系列更新:鸿蒙更丝滑、4G信号比苹果13更快了
核污水马上排海!还敢吃海鲜吗 日本在售海豚肉测出汞含量超标近百倍 当前最新
鱼干的做法家常做法大的鱼干_鱼干的做法
企业债发审职责划转无缝衔接 证监会核发首批注册批文
每日信息:【国际大宗商品早报】农产品及金属期价全线下跌 国际油价震荡收涨
【读财报】3月上市猪企业绩向好:牧原、温氏销量领先 唐人神收入同比翻倍
广西壮族自治区宾阳县发布暴雨红色预警
老鼠半夜按门铃输密码吓坏房主 网友直呼不可思议:老鼠成精了|当前速看
环球报道:你在城市待遇如何?一季度全国居民收入榜出炉:12个省份跻身“万元户”
赢麻!美公司高管狂赞坐中国高铁比坐飞机还好:马斯克力挺-当前滚动
iPadOS 17支持设备清单曝光:多款经典机型被抛弃
bill to 环球新视野