Gramlin 查询提示使用结果缓存 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

Gramlin 查询提示使用结果缓存

下面的查询提示可以在查询结果缓存已启用。

GremlinenableResultCache查询提示

这些区域有:enableResultCache值为的查询提示true如果查询结果已被缓存,则会导致从缓存中返回查询结果。否则,它会返回新结果并缓存它们,直到它们从缓存中清除为止。例如:

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

稍后,您可以通过再次发出完全相同的查询来访问缓存的结果。

如果此查询提示的值是false,或者如果不存在,则不会缓存查询结果。但是,将其设置为false不清除现有的缓存结果。要清除缓存的结果,请使用invalidateResultCache要么invalidateResultCachekey提示。

GremlinenableResultCacheWithTTL查询提示

这些区域有:enableResultCacheWithTTL查询提示还返回缓存结果(如果有),但不影响缓存中已有结果的 TTL。如果当前没有缓存结果,则查询将返回新结果并缓存它们以保持生存时间 (TTL) 由enableResultCacheWithTTL查询提示。该生存时间以秒为单位指定。例如,以下查询指定了 60 秒的生存时间:

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

在 60 秒之前 time-to-live 结束了,你可以使用同样的查询(在这里,g.V().has('genre','drama').in('likes')) 使用enableResultCache或者enableResultCacheWithTTL查询提示以访问缓存的结果。

注意

指定生存期enableResultCacheWithTTL不会影响已缓存的结果。

  • 如果以前使用缓存结果enableResultCache,必须先明确清除缓存enableResultCacheWithTTL生成新结果并针对它指定的 TTL 缓存它们。

  • 如果以前使用缓存结果enableResultCachewithTTL,之前的 TTL 必须先过期之前enableResultCacheWithTTL生成新结果并针对它指定的 TTL 缓存它们。

生效时间过后,查询的缓存结果将被清除,同一查询的后续实例随后返回新结果。如果enableResultCacheWithTTL附加到后续查询后,新结果将使用它指定的 TTL 进行缓存。

GremlininvalidateResultCacheKey查询提示

这些区域有:invalidateResultCacheKey查询提示可以采取true要么false值。一个truevalue 导致查询的缓存结果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')

GremlininvalidateResultCache查询提示

这些区域有: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')

GremlinnumResultsCached查询提示

这些区域有:numResultsCached查询提示只能与包含的查询一起使用iterate(),它指定了要为其附加的查询缓存的最大结果数。请注意,结果在缓存时numResultsCached不会返回存在,只是缓存。

例如,以下查询指定最多应缓存 100 个结果,但这些缓存的结果都不返回:

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

然后,您可以使用类似以下内容的查询来检索一系列缓存的结果(这里是前十个结果):

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

GremlinnoCacheExceptions查询提示

这些区域有:noCacheExceptions查询提示可以采取true要么false值。一个truevalue 会导致隐藏与结果缓存相关的任何异常。例如:

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

特别是,这抑制了QueryLimitExceededException,如果查询的结果太大而无法放入结果缓存中,则会引发此值。