Closed SamuelSze1 closed 2 weeks ago
此次更改引入了对 BaseCmd
类的增强功能,主要包括管理被阻塞连接的新方法。新增的 BlockThisClientToWaitLRPush
和 ServeAndUnblockConns
方法支持在等待特定键时阻塞客户端并管理这些连接。此外,新增的命令 BLPop
和 BRPop
及其相关类扩展了命令处理系统,增强了阻塞列表弹出操作的能力。
文件 | 变更摘要 |
---|---|
src/base_cmd.cc , src/base_cmd.h |
添加 BlockThisClientToWaitLRPush 和 ServeAndUnblockConns 方法,及 BlockedConnNode 类用于管理被阻塞的连接。 |
src/cmd_admin.cc , src/cmd_keys.cc , src/cmd_list.cc , src/cmd_list.h |
引入 BLPopCmd 和 BRPopCmd 类,修改现有命令以支持阻塞操作并在成功后调用 ServeAndUnblockConns 。 |
src/cmd_table_manager.cc |
在命令表中注册 BLPop 和 BRPop 命令,支持三个参数的阻塞弹出操作。 |
src/pikiwidb.cc , src/pikiwidb.h |
添加管理被驱逐的阻塞连接的方法和成员变量,包括 ScanEvictedBlockedConnsOfBlrpop 和相关的保护机制。 |
sequenceDiagram
participant Client
participant BaseCmd
participant PikiwiDB
Client->>BaseCmd: Request BLPop
BaseCmd->>PikiwiDB: BlockThisClientToWaitLRPush
PikiwiDB-->>BaseCmd: Add to waiting list
BaseCmd->>Client: Wait for key
Client->>BaseCmd: Successfully pop element
BaseCmd->>PikiwiDB: ServeAndUnblockConns
PikiwiDB-->>Client: Unblock connection, return element
🐰 在月光下我跳跃,
新命令如星星闪耀。
阻塞连接不再孤独,
兔子快乐又自由。
管理轻松真美妙,
代码变得如梦般好! 🌙✨
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Summary by CodeRabbit
新功能
BLPop
和BRPop
),允许在特定条件下从列表中弹出元素。Bug修复
文档