面试题答案
一键面试- 基于时间戳校验:
- 原理:在MySQL和Redis中都记录数据的更新时间戳。当需要校验一致性时,对比两者数据对应的时间戳。如果时间戳相同,说明数据在该时间点之后没有被一方单独修改,数据大概率是一致的;如果时间戳不同,则以时间戳较新的数据为准进行同步或修正。
- 哈希校验:
- 原理:对MySQL和Redis中的数据分别计算哈希值(如MD5、SHA - 1等)。在一致性校验时,对比两者计算出的哈希值。若哈希值相同,表明数据内容相同,即数据一致;若哈希值不同,则说明数据内容存在差异,需要进一步排查并同步数据。
- 全量比对校验:
- 原理:定期或在特定触发条件下,将MySQL中的全量数据与Redis中的数据进行逐条比对。这种方法可以确保数据的全面一致性,但由于涉及全量数据,比较耗时和占用资源。一般适用于数据量较小或者在业务低峰期进行。
- 基于版本号校验:
- 原理:类似于时间戳,为数据维护一个版本号。每次数据在MySQL或Redis中更新时,版本号递增。校验时,对比两者数据的版本号,版本号相同则数据一致,不同则需要根据版本号较高的数据进行同步。