Look-aside Cache 和 Look-through Cache

Look Aside

CPU requests memory from cache and main memory simultaneously. If the data is in the cache then it is returned, otherwise the CPU waits for the data from the main memory.

Look Through

CPU request memory from the cache. Only if the data is not present is the main memory queried.
  




### Cache-Aside模式介绍 Cache-Aside模式,也称为旁路缓存模式,是一种广泛应用于分布式系统的缓存管理策略[^3]。此模式的核心理念在于应用程序逻辑中显式地控制缓存的读取与写入行为,而不是依赖于底层的数据存储自动完成这些操作。 在这种架构设计里,当应用尝试访问某个资源时,首先会在本地或分布式的缓存层查找该资源是否存在;如果命中,则直接返回给客户端;如果没有找到(即发生未命中的情况),则继续向持久化数据库发起查询请求并获取所需数据,在这之后不仅要把查得的结果反馈回去还要将其副本同步保存至缓存内以便后续更快捷地响应相同类型的请求[^1]。 值得注意的是,由于采用这种方式使得缓存实际的数据源之间并没有建立任何直接关联,因此所有的协调工作都交给了上层的应用程序来承担——包括但不限于决定何时加载新条目进入高速缓冲区以及怎样维护二者间的一致性关系等重要职责。 ### 实现方式 为了更好地理解如何具体实施这一机制,下面给出了一段Python伪代码作为示范: ```python def get_data(key): # 尝试从缓存中检索数据 cached_value = cache.get(key) if cached_value is not None: return cached_value # 如果缓存未命中, 则转向数据库查询 db_value = database.query(key) if db_value is not None: # 更新缓存 (可选设置过期时间) cache.set(key, db_value, timeout=EXPIRATION_TIME) return db_value def set_data(key, value): try: # 同步更新数据库 database.update(key, value) # 删除旧版本缓存项而非立即刷新它, # 这样可以减少竞争条件的风险. cache.delete(key) except Exception as e: handle_exception(e) def delete_data(key): # 清除对应的记录 database.delete(key) # 移除相应的缓存条目 cache.delete(key) ``` 上述例子展示了典型的基于Cache-Aside模式的操作流程:`get_data()`函数用于处理读路径上的场景,先检查是否有可用的缓存版本;一旦发现缺失就会触发一次完整的回溯过程直至最终成功填充好临时性的快照供下次快速定位使用。另一方面,针对修改类动作如`set_data()`, 更倾向于采取一种相对保守的做法就是仅限于移除已有的映射而不做即时替换,以此降低因并发冲突而导致潜在风险的可能性[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值