本页面介绍如何使用 Google Cloud 控制台为您的应用配置和监控 Memcache 服务,本页面还介绍了如何使用 App Engine Memcache Python API 来设置和检索缓存值,以及如何使用“比较和设置”功能来处理对同一个 Memcache 键的并发写入请求。要详细了解 Memcache,请参阅 Memcache 概览。
配置 memcache
- 转到 Google Cloud 控制台中的 Memcache 页面。
转到 Memcache 页面 选择要使用的 Memcache 服务等级:
- 共享(默认值)- 免费,尽力提供缓存容量。
- 专用 - 按照缓存大小以 GB 小时计费,提供专门为您的应用分配的固定缓存容量。
如需详细了解可用的服务等级,请参阅 Memcache 概览。
缓存值和检索值
缓存值
当且仅当键没有赋值时,使用 add()
为其添加一个值,到期时间为可选项:
memcache.add(key="[KEY]", value="[VALUE]", time=[EXPIRATION_TIME])
例如,如需为 weather_USA_98105
键添加 raining
值,并将到期时间设置为写入值后的一小时,请使用以下命令:
memcache.add(key="weather_USA_98105", value="raining", time=3600)
如需详细了解 add()
和其他设置值的方法,请参阅 Memcache Python API 文档。
访问 Memcache 示例,查看缓存值的其他示例。
查找缓存值
使用 get()
查找单个键的值:
memcache.get(key="[KEY]")
例如,如需获取键 weather_USA_98105
的值,请运行以下命令:
memcache.get(key="weather_USA_98105")
如需详细了解 get()
和其他查找值的方法,请参阅 Memcache Python API 文档。
在 Google Cloud 控制台中监控 Memcache
- 转到 Google Cloud 控制台中的 Memcache 页面。
转到 Memcache 页面 - 查看以下报告:
- Memcache 服务等级:显示您的应用使用的服务等级为“共享”还是“专用”。如果您是项目的所有者,则可以在两者之间切换。详细了解服务等级。
- 命中率:显示从缓存处理的数据请求的百分比,以及从缓存处理的数据请求的原始数量。
- 缓存中的内容。
- 最早的内容的存续时间:最早缓存的内容的存续时间。请注意,每次使用内容时(无论是读取还是写入)都会重置其存续时间。
- 总缓存大小。
您可以执行以下任何操作:
- 新建键:向缓存添加新键。
- 查找键:检索现有键。
- 清空缓存:移除缓存中的所有键值对。
(仅限专用 Memcache 使用)查看热键列表。
- “热键”是 Memcache 中收到的每秒查询次数 (QPS) 超过 100 的键。
- 该列表包含最多 100 个热键,按 QPS 的多少降序排列。
处理并发写入
如需使用“比较和设置”功能处理对同一个 Memcache 键的多条写入请求,请执行以下操作:
- 实例化 Memcache
Client
对象。 - 使用重试循环(最好设置重试次数上限并使用指数退避算法)
- 在重试循环内,使用
gets()
或get_multi()
获取键,并将for_cas
参数设置为True
。 - 在重试循环内,使用
cas()
或cas_multi()
更新键值。
- 在重试循环内,使用
以下代码段展示了使用“比较和设置”功能的一种方法:
def bump_counter(key):
client = memcache.Client()
while True: # Retry loop
counter = client.gets(key)
if counter is None: raise KeyError('Uninitialized counter')
if client.cas(key, counter+1):
break
如果不使用重试循环,上述代码将不会避免竞争条件,而只是对其进行检测,因此,有必要添加重试循环。Memcache 服务会确保应用于上述模式时(即使用 gets()
和 cas()
),如果两个(或更多)不同的客户端实例恰好参与竞争条件,则只有执行 cas()
操作的第一个实例能成功运行(返回 True
),而第二个(以及后续的)实例将失败(返回 False
)。
此外,您还应该设置重试次数上限来对示例代码进行优化,以避免在发生大量争用同一计数器的最糟糕情况下陷入无限循环。如果更新计数器的请求数量超过了 memcache 服务可以实时处理的上限,便可能发生此类争用。
如需详细了解“比较和设置”功能,请参阅 Memcache 概述。
后续步骤
- 如需详细了解 Memcache,请参阅 Memcache 概览。
- 参阅 Memcache 示例,查看在 Python 中使用 Memcache 的代码示例。