主动-主动数据库中的字符串和位域

有关将字符串和位域与 Active-Active 数据库一起使用的信息。

Redis 企业软件 Redis 云

主动-主动数据库支持字符串和位域。

注意:
RS 版本 6.0.20 中添加了主动-主动位域支持。

对这两个数据结构的更改将在主动-主动成员数据库之间复制。

复制语义

除了字符串计数器(见下文)之外,字符串和位域都使用 “last write wins” 方法进行复制。这样做的原因是字符串和位域实际上是二进制对象。因此,与列表、集合和哈希不同,字符串或位域上给定作的冲突解决语义是未定义的。

“last write pres” 的工作原理

挂钟时间戳 (OS 时间) 存储在每个字符串的元数据中 和 bitfield作。如果 replication syncer 无法确定作顺序,则 具有 Latest Timestamp 的值优先。这是主动-主动数据库使用 OS 时间解决冲突的唯一情况。

下面是一个示例,其中稍后对同一密钥进行更新 时间 (t2) 优先于 t1 的更新。

时间 区域 1 区域 2
T1 SET 文本 “a”
T2 SET 文本 “b”
T3 — 同步 — — 同步 —
T4 SET 文本 “c”
T5 — 同步 — — 同步 —
T6 SET 文本 “d”

字符串计数器支持

当您使用字符串作为计数器时(例如,使用 INCRINCRBY 命令), 然后,冲突将在语义上得到解决。

在发生冲突的写入时,计数器会累积计数器作总数 在每次同步中的所有成员主动-主动数据库中。

下面是如何 counter 值在两个成员 Active-Active 数据库之间同步时有效。跟 每次同步,counter 值都会累积 private increment 和 每个站点的递减量,并在 并发写入。

时间 区域 1 区域 2
T1 INCRBY 计数器 7
T2 INCRBY 柜台 3
T3 GET 计数器
7
GET 计数器
3
T4 — 同步 — — 同步 —
T5 GET 计数器
10
GET 计数器
10
T6 DECRBY 计数器 3
T7 INCRBY 计数器 6
T8 — 同步 — — 同步 —
T9 GET 计数器
13
GET 计数器
13
注意:
主动-主动数据库支持 59 位计数器。 此限制是为了防止在并发作中溢出计数器。
为本页评分
返回顶部 ↑