我已经阅读了许多文章,声明关键值存储只需要两个操作:
set(key, value)
get(key)
这适用于单个进程,但是当您有多个进程时,键值存储如何管理并发?我原本认为需要用于 compare-and-swap 样式并发的版本号(例如,无符号整数)。例如,这两项行动将是:
set(key, value, version)
,其中version
是 条件 - 不匹配会导致并发错误,成功匹配会导致增量。get(key)
(同时返回value
和version
)。答案 0 :(得分:0)
有两种设计。有些人正在使用锁,而其他人正在使用MultiVersion Concurrency Control。
MVCC实现没有锁的并发性。它可以概括为: