Read Concern とは何ですか?
デフォルトでは、Momentoキャッシュは最終一貫性モデルに従います。つまり、キャッシュから値を書き込んだ後、わずかな秒数でそれを読み返した場合、 レスポンスに直近に更新された値が反映されない可能性があります。Momento クライアントには ReadConcern
という設定オプションが用意されており、これを使用してこの動作を調整することができます 。ReadConcern
設定は、システムが必要とする一貫性と応答性のレベルを調整するために変更することができます。適宜変更して活用してください:
Read Concern | 動作回数の係数 | Default |
---|---|---|
Balanced | 1x | Yes |
Consistent | 6x | No |
注記
この設定はクライアントレベルで指定されるので、そのクライアントからのすべてのapiコールに使用されます。読み込みの一貫性が必要な api 呼び出しが数件しかない場合は、2 つのクライアントを作成するのが最善です。1 つは Consistent
ReadConcern
用、もう 1 つは Balanced
ReadConcern
用です。こうすることで、一貫性のある読み取りのリクエストにのみ 6 倍の操作回数乗数が発生します。
以下は Consistent
ReadConcern
を持つ新しいクライアントをインスタンス化する例です:
- JavaScript
- Go
return await CacheClient.create({
configuration: Configurations.Laptop.v1().withReadConcern(ReadConcern.CONSISTENT),
credentialProvider: CredentialProvider.fromEnvironmentVariable('MOMENTO_API_KEY'),
defaultTtlSeconds: 60,
});
備考
Full example code and imports can be found here
context := context.Background()
credentialProvider, err := auth.NewEnvMomentoTokenProvider("MOMENTO_API_KEY")
if err != nil {
panic(err)
}
defaultTtl := time.Duration(9999)
eagerConnectTimeout := 30 * time.Second
client, err := momento.NewCacheClientWithEagerConnectTimeout(
config.LaptopLatest().WithReadConcern(config.CONSISTENT),
credentialProvider,
defaultTtl,
eagerConnectTimeout,
)
if err != nil {
panic(err)
}
client.Ping(context)
備考
Full example code and imports can be found here