7.25.4. grn_cache#

7.25.4.1. 概要#

注釈

このAPIは実験的です。

grn_cacheselect コマンドのレスポンスを保持するためのデータストアです。一般的なオブジェクトのキャッシュとして使うものではありません。あくまで select コマンドのためのものです。

grn_cache_current_set() を使うことで現在のキャッシュオブジェクトを変更することができます。 select コマンドのレスポンスが内部的に用いられます。

select コマンドは、一つのグローバルキャッシュオブジェクトを利用します。もし複数のデータベースをオープンしていた場合、そのキャッシュオブジェクトは共有されます。これは重要な問題です。

もし複数のデータベースを開き、 select コマンドを使用するのであれば、 grn_cache オブジェクトを使う必要があります。 groonga-httpd のようなケースが該当します。もし一つのデータベースのみを開く場合や、 select コマンドを使わない場合は、 grn_cache オブジェクトを使う必要はありません。 Rroonga のようなケースです。

7.25.4.2. #

以下はキャッシュを変更する例です。

grn_cache *cache;
grn_cache *cache_previous;
cache = grn_cache_open(ctx);
cache_previous = grn_cache_current_get(ctx);
grn_cache_current_set(ctx, cache);
/* grn_ctx_send(ctx, ...); */
grn_cache_current_set(ctx, cache_previous);

7.25.4.3. リファレンス#

type grn_cache#

grn_cache は詳細を公開していないオブジェクトです。 grn_cache_open() で作成し、 grn_cache_close() で解放できます。

grn_cache *grn_cache_open(grn_ctx *ctx)#

新規にキャッシュオブジェクトを作成します。

新しいキャッシュオブジェクト作成のためのメモリ割り当てに失敗した場合、 NULL を返します。エラー情報は ctx に格納されます。

パラメータ:
  • ctx -- その時点のコンテキスト。

戻り値:

新しいキャッシュオブジェクトの作成に成功した場合は NULL 以外の値を返します。このキャッシュオブジェクトは grn_cache_close() で解放されなければなりません。

grn_rc grn_cache_close(grn_ctx *ctx, grn_cache *cache)#

cache のリソースを解放。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • cache -- キャッシュオブジェクトを解放する。

戻り値:

成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。

grn_rc grn_cache_current_set(grn_ctx *ctx, grn_cache *cache)#

select コマンドで使われるキャッシュオブジェクトを設定します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • cache -- select コマンドで使われるキャッシュオブジェクト。

戻り値:

成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。

grn_cache *grn_cache_current_get(grn_ctx *ctx)#

select コマンドで使われるキャッシュオブジェクトを取得します。

パラメータ:
  • ctx -- その時点のコンテキスト。

戻り値:

select コマンドで使われるキャッシュオブジェクト。 NULL のこともあります。

grn_rc grn_cache_set_max_n_entries(grn_ctx *ctx, grn_cache *cache, unsigned int n)#

キャッシュオブジェクトのエントリの最大数を設定します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • cache -- 変更するキャッシュオブジェクト。

  • n -- キャッシュオブジェクトの新しい最大エントリ数。

戻り値:

成功時は GRN_SUCCESS 、エラー時は GRN_SUCCESS 以外。

unsigned int grn_cache_get_max_n_entries(grn_ctx *ctx, grn_cache *cache)#

キャッシュオブジェクトのエントリの最大数を取得します。

パラメータ:
  • ctx -- その時点のコンテキスト。

  • cache -- ターゲットキャッシュオブジェクト。

戻り値:

キャッシュオブジェクトの最大エントリ数。