在后端服务缓存一致性实践中,我们常遇到缓存数据与源数据不一致的问题。本文分享两种校验方案:基于哈希值的全量校验和基于差分算法的增量校验。
哈希值校验方案 该方案通过计算缓存数据的哈希值并与源数据对比来验证一致性。实现时需注意哈希算法的选择(如SHA256),并考虑缓存更新时间戳同步问题。
import hashlib
class CacheConsistencyChecker:
def __init__(self):
self.cache = {}
def get_hash(self, data):
return hashlib.sha256(str(data).encode()).hexdigest()
def validate_cache(self, key, source_data):
cached_data = self.cache.get(key)
if not cached_data:
return False
# 对比缓存数据与源数据的哈希值
cache_hash = self.get_hash(cached_data)
source_hash = self.get_hash(source_data)
return cache_hash == source_hash
差分算法校验方案 当数据量较大时,全量哈希对比效率较低。此时可采用差分算法,只对比变更字段,提高校验效率。
import json
class DiffChecker:
def __init__(self):
self.cache = {}
def diff_update(self, key, new_data, old_data):
if not old_data:
return True
# 只对比不同字段
diff = {}
for k, v in new_data.items():
if k not in old_data or old_data[k] != v:
diff[k] = v
self.cache[key] = new_data
return diff
实践建议:
- 哈希校验适用于小数据量场景,可作为兜底方案;
- 差分校验适合大数据量、高频更新的业务场景;
- 两种方案结合使用可提升系统鲁棒性。

讨论