我正在将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 cluster has zero cache hits and cache miss
我在这里做错什么还是在这里错过任何配置步骤吗?
还想知道是否有任何方法可以使每个请求的DAX缓存命中或遗漏详细信息,因此调试可能会更容易一些。
答案 0 :(得分:1)
缓存未命中的原因是DynamoDBQueryExpression,它默认将consistentRead标志设置为true。
尽管默认情况下DynamoDBMapperConfig进行EVENTUAL一致读取,但DynamoDBQueryExpression设置为一致读取。因此,如果您使用的是DynamoDBQueryExpression,则必须显式将consistentRead设置为false。
当请求一致的读取时,DAX请求将直接转发到DynamoDB,这就是为什么在DAX指标上我们看不到缓存命中的原因。