1

我将 DAX 客户端与 DyanamoDBMapper 一起使用。我正在使用以下依赖项。

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-dynamodb</artifactId>
            <version>1.11.751</version>
        </dependency>
        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>amazon-dax-client</artifactId>
            <version>1.0.205917.0</version>
        </dependency>

下面的代码显示了 Mapper 是如何初始化的

    AmazonDaxClientBuilder builder = AmazonDaxClientBuilder.standard();
    builder.withRegion("<region>");
    builder.withEndpointConfiguration("<DAX ednpoint>");
    client = builder.build();
    DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(client);

使用此设置时,在 DAX 指标中,我看到查询的 0 次缓存命中和 0 次缓存未命中。但是当我删除映射器并使用表进行查询时,我可以看到缓存命中。

我没有使用这里描述的一致读取。AWS DAX 集群的缓存命中和缓存未命中为零

我在这里做错了什么或错过了任何配置步骤吗?

还想知道是否有任何方法可以获取每个请求的 DAX 缓存命中或未命中详细信息,因此调试可能会更容易一些。

4

1 回答 1

2

缓存未命中的原因是 DynamoDBQueryExpression 默认将一致读取标志设置为 true。

尽管 DynamoDBMapperConfig 默认执行 EVENTUAL 一致读取,但 DynamoDBQueryExpression 设置为一致读取。因此,如果您使用的是 DynamoDBQueryExpression,则必须将一致读取显式设置为 false。

当请求一致读取时,DAX 请求将直接转发到 DynamoDB,这就是我们在 DAX 指标中没有看到缓存命中的原因。

于 2020-04-26T01:38:47.247 回答