走进KeyDB( 六 )
-
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的时间戳版本号 。
推荐阅读
- 和平精英|走进和平精英,军需宝箱全面更新,各新皮肤上线
- 魔兽世界|魔兽世界燃烧的远征----教你主城挂机每小时1000金
- 王者荣耀|明星都能走进小学课本,《王者荣耀》英雄,化身小学课本封面
- 金泰相|FPX惨败后队员坐上经济舱,糖小幽陪Doinb走进医院,粉丝破防了!
- 韩遂|三国杀:新武将胡车儿技能曝光,韩遂也终能走进军争模式
- 中消协|中消协:“双11”避开直播卖货的7个“坑”
- Find X2将搭载3K屏幕,网友:这才是旗舰该有的样子!
- 2020年疫情过后,最火最赚钱的六个行业
- 从头学习Linux基础
- 发票扫描识别 发票ocr识别