結果キャッシュを使用する Gremlin クエリヒント - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

結果キャッシュを使用する Gremlin クエリヒント

次のクエリヒントは、クエリ結果のキャッシュが有効である場合に使用できます。

Gremlin enableResultCacheクエリヒント

enableResultCache の値を持つ true クエリヒントは、クエリ結果が既にキャッシュされている場合、キャッシュから返されます。そうでない場合は、新しい結果を返し、キャッシュからクリアされるまでキャッシュします。例:

g.with('Neptune#enableResultCache', true) .V().has('genre','drama').in('likes')

後で、まったく同じクエリを再度発行することで、キャッシュされた結果にアクセスできます。

このクエリヒントの値が false または、存在しない場合、クエリ結果はキャッシュされません。ただし、それをfalse に設定すると、既存のキャッシュされた結果をクリアしません。キャッシュされた結果をクリアするには、invalidateResultCacheまたはinvalidateResultCachekeyヒントを使用します。

Gremlin enableResultCacheWithTTLクエリヒント

enableResultCacheWithTTL クエリヒントは、キャッシュにすでに存在する結果TTLの に影響を与えることなく、キャッシュされた結果がある場合は返します。現在キャッシュされた結果がない場合、クエリは新しい結果を返し、enableResultCacheWithTTLクエリヒントで指定された有効期限 (TTL) の間キャッシュします。その有効期限は秒単位で指定します。たとえば、次のクエリでは 60 秒の有効期限を指定します。

g.with('Neptune#enableResultCacheWithTTL', 60) .V().has('genre','drama').in('likes')

60 秒が経過する前に、 enableResultCacheまたはクエリヒントのいずれかで同じenableResultCacheWithTTLクエリ (ここで time-to-live は g.V().has('genre','drama').in('likes')) を使用して、キャッシュされた結果にアクセスできます。

注記

指定される有効期限enableResultCacheWithTTLは、すでにキャッシュされている結果には影響しません。

  • 結果が以前に を使用してキャッシュされていた場合enableResultCache、 が新しい結果enableResultCacheWithTTLを生成し、指定した に対してキャッシュする前に、キャッシュTTLを最初に明示的にクリアする必要があります。

  • 結果が以前に を使用してキャッシュされていた場合enableResultCachewithTTL、 が新しい結果enableResultCacheWithTTLを生成し、指定した にキャッシュする前に、その前の が最初に期限切れTTLになるTTL必要があります。

有効期限が過ぎると、クエリのキャッシュされた結果がクリアされ、同じクエリの後続のインスタンスが新しい結果を返します。が後続のクエリにアenableResultCacheWithTTLタッチされている場合、新しい結果は指定された でキャッシュTTLされます。

Gremlin invalidateResultCacheKeyクエリヒント

invalidateResultCacheKey クエリヒントは、true または false 値を取ることができます。あるtrue 値を指定すると、invalidateResultCacheKey がアタッチされてクリアされるクエリに対してキャッシュされた結果が発生します。たとえば、次の例では、クエリキー g.V().has('genre','drama').in('likes') のキャッシュされた結果がクリアされます。

g.with('Neptune#invalidateResultCacheKey', true) .V().has('genre','drama').in('likes')

上記のクエリ例では、新しい結果がキャッシュされることはありません。既存のキャッシュされた結果をクリアした後に新しい結果をキャッシュする場合は、同じクエリで、enableResultCache (またはenableResultCacheWithTTL) を含めることができます。

g.with('Neptune#enableResultCache', true) .with('Neptune#invalidateResultCacheKey', true) .V().has('genre','drama').in('likes')

Gremlin invalidateResultCacheクエリヒント

invalidateResultCache クエリヒントは、true または false 値を取ることができます。ある true 値を指定すると、結果キャッシュ内のすべての結果がクリアされます。例:

g.with('Neptune#invalidateResultCache', true) .V().has('genre','drama').in('likes')

上記のクエリ例では、結果がキャッシュされることはありません。既存のキャッシュを完全にクリアした後に新しい結果をキャッシュする場合は、同じクエリで、enableResultCache (またはenableResultCacheWithTTL) を含めることができます。

g.with('Neptune#enableResultCache', true) .with('Neptune#invalidateResultCache', true) .V().has('genre','drama').in('likes')

Gremlin numResultsCachedクエリヒント

numResultsCached クエリヒントは、iterate() を含むクエリでのみ使用でき、アタッチ先のクエリに対してキャッシュする結果の最大数を指定します。numResultsCached が存在する場合にキャッシュされる結果は返されず、キャッシュされるだけであることに注意してください。

たとえば、次のクエリでは、結果のうち最大 100 個をキャッシュするよう指定していますが、キャッシュされた結果は返されません。

g.with('Neptune#enableResultCache', true) .with('Neptune#numResultsCached', 100) .V().has('genre','drama').in('likes').iterate()

次のようなクエリを使用して、キャッシュされた結果の範囲 (ここでは最初の 10 件) を取得できます。

g.with('Neptune#enableResultCache', true) .with('Neptune#numResultsCached', 100) .V().has('genre','drama').in('likes').range(0, 10)

Gremlin noCacheExceptionsクエリヒント

noCacheExceptions クエリヒントは、true または false 値を取ることができます。ある true 値を指定すると、結果キャッシュに関連するすべての例外が抑制されます。例:

g.with('Neptune#enableResultCache', true) .with('Neptune#noCacheExceptions', true) .V().has('genre','drama').in('likes')

特に、これは QueryLimitExceededException を抑制し、これはクエリの結果が大きすぎて結果キャッシュに収まらない場合に発生します。