携程 Redis 多数据中心 双向同步实践 祝辰0)->(1,1) 删除导致数据不一致 • 假设已经存在 一个KEY • Redis-A做更新 操作 • Redis-B做删除 操作 CRDT -- Tombstone 删除操作时,只做 逻辑删除 保留被删除的记录 内存爆满 随着时间的推移,大量的失效KEY驻留 时间轴 CRDT -- GC 基于节点之间的vector clock的通讯,删除不必要的 失效KEY (1,0) Op-based Replication • 交换律 • 结合律 高可用 全量同步 • Redis生成内存 快照 • 发送给下游 Redis同步 • 期间,下游 Redis不可用 Fork Redis客户端 CRDT的优势 • Redis生成内存 快照 • 使用OP-LOG的 形式发送 • 期间,下游 Redis可用 Fork Redis客户端 • CRDT⼊门0 码力 | 33 页 | 2.15 MB | 1 年前3
Redis 多数据中心双向同步 祝辰生修改的操作转发送给slave,slave 执行和 master 同样的操作, 达到master-slave数据一致的目的 全量同步 • master 将自身数据库以快照形式(RDB文件)发送给 slave, slave 通过加载快照文件, 达到和 master 数据 一致的目的 • 适用于新添加 slave 或同步缓冲区溢出时, master 与 slave 同步 Redis Master-Slave0 码力 | 45 页 | 1.74 MB | 1 年前3
《Redis使用手册》(试读版)程序使⽤了多个字符串键去储存⽂章信息, 并且每个字符串键的名字都是以 article:::: 格式命名的, 这是⼀种 Redis 使⽤惯例: Redis ⽤户通常会为逻辑上相关联的键设置相同的前 缀, 并通过分隔符来区分键名的各个部分, 以此来构建⼀种键的命名格式。 ⽐如对于 article::10086::title 、 article::10086::author article:: :: 格式, 诸如此类。 唯⼀需要注意的是, ⼀个程序应该只使⽤⼀种键名分隔符, 并且持续地使⽤同⼀种键名格式, 以免造成混乱。 通过使⽤相同的格式去命名逻辑上相关联的键, 我们可以让程序产⽣的数据结构变得更容易被理解, 并且在有 需要的时候, 还可以根据特定的键名格式, 在数据库⾥⾯以模式匹配的⽅式查找指定的键。 2.10 STRLEN:获取字符串值的字节⻓度 ⽐如键名 article::10086::author 就远不如键名 author 简洁, ⽽键名 article::10086::title 也远不如键名 title 来 得简洁。 最后, 虽然程序在逻辑上会把带有相同前缀的字符串键看作是相关联的⼀组数据, 但是在 Redis 看来, 它 们只不过是储存在同⼀个数据库中的不同字符串键⽽已。 因此当程序需要处理⼀组相关联的数据时, 它就 必须对所有有关的字符串键都执⾏相同的操作。 0 码力 | 352 页 | 6.57 MB | 1 年前3
共 3 条
- 1













