

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 兼容 API 的直读封装器设计
<a name="wrapper-design"></a>

在 DynamoDB 数据库中引入缓存层时，通常需要避免对客户端代码进行大量修改。实现此目的的一种方法是引入一个客户端 shim 类，该类包装 DynamoDB 客户端，并向其调用者提供相同的接口。所有的缓存逻辑都包含在包装器类中，并且对调用者隐式和不可见地执行。

例如，以下代码示例构造了一个 DynamoDB 客户端、一个（Redis OSS）客户端和 ElastiCache 一个 shim。`CacheClient`填充物看起来像 DynamoDB 客户端，`dynamodb_client`在内部使用与数据库通信，它使用来`redis_client`提供缓存：

```
dynamodb_client = boto3.client("dynamodb")

redis_client = Redis(host='hostname', port=6379, decode_responses=True, ssl=True, read_from_replicas=True)

cache_client = CacheClient(dynamodb_client, redis_client, ttl=60*60)
```

这种方法不需要在应用程序中进行任何其他更改即可引入缓存。