什么App Engine数据存储缓存策略将提供完整的缓存一致性?

时间:2014-11-30 14:54:54

标签: google-app-engine caching google-cloud-datastore

App Engine NDB有一个很好的数据存储缓存策略,它可以在memcache中缓存实体,并且可以确保缓存始终与底层数据存储同步。

以下是伪代码策略的概述:

从数据存储中获取实体:

if entity in memcache:
    return entity
else:
    add memcache lock for entity
    get memcache lock for later CAS use
    check get memcache lock retrieved the same add memcache lock
    get entity from datastore
    save entity to memcache using CAS
    return entity

将实体放入数据存储区:

add memcache lock for entity
put entity into datastore
remove memcache lock

从数据存储中删除实体:

add memcache lock for entity
delete entity from datastore

这种设计的优点是缓存与数据存储区不同步的机会很少。但是,有几种情况我可以想到它可能发生的地方:

  1. 如果删除实体时内存缓存锁失败。
  2. 如果在更新事务中的实体时memcache锁失败。
  3. 我在这里更详细地描述了它们:https://github.com/qedus/nds/labels/consistency

    什么是缓存策略,数据存储不会与缓存不同步?

0 个答案:

没有答案