走进KeyDB( 六 )

  • try_lock:一次获取失败 , 直接返回

  • lock:忙等 , 每1024 * 1024次忙等后使用sched_yield 主动交出cpu , 挪到cpu的任务末尾等待执行 。

在KeyDB中将try_lock和事件结合起来 , 来避免忙等的情况发生 。 每个客户端有一个专属的lock , 在读取客户端数据之前会先尝试加锁 , 如果失败 , 则退出 , 因为数据还未读取 , 所以在下个epoll_wait处理事件循环中可以再次处理 。

Active-Replica

KeyDB实现了多活的机制 , 每个replica可设置成可写非只读 , replica之间互相同步数据 。 主要特性有: