# groonga - オープンソースのカラムストア機能付き全文検索エンジン

- English

# 7.21.4. `grn_cache`

## 7.21.4.1. 概要

注釈

このAPIは実験的です。

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

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

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

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

## 7.21.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.21.4.3. リファレンス

`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 -- ターゲットキャッシュオブジェクト。
  戻り値: | キャッシュオブジェクトの最大エントリ数。