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

- English page

# 8.15.2. `grn_cache`

## 8.15.2.1. 概要

ノート

このAPIは実験的です。

`grn_cache` is a data store that keeps responses of select command. It is not general use cache object. It is only for select command.

You can just change the current cache object by `grn_cache_current_set()`. select command response cache is done internally.

select command uses one global cache object. If you open multiple databases, the one cache is shared. It is an important problem.

If you open multiple databases and use select command, you need to use `grn_cache` object. It is groonga-httpd case. If you open only one database or don't use select command, you don't need to use `grn_cache` object. It is rroonga case.

## 8.15.2.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);

## 8.15.2.3. リファレンス

`grn_cache`

  It is an opaque cache object. You can create a `grn_cache` by `grn_cache_open()` and free the created object by `grn_cache_close()`.

grn_cache *`grn_cache_open`(grn_ctx *ctx)

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

  If memory allocation for the new cache object is failed, `NULL` is returned. Error information is stored into the `ctx`.

  パラメタ: | ctx -- その時点のコンテキスト。
  戻り値: | A newly allocated cache object on success, `NULL` otherwise. The returned cache object must be freed by `grn_cache_close()`.

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

  Frees resourses of the `cache`.

  パラメタ: | ctx -- その時点のコンテキスト。 cache -- The cache object to be freed.
  戻り値: | 成功時は `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 -- The new max number of entries of the cache object.
  戻り値: | 成功時は `GRN_SUCCESS` 、エラー時は `GRN_SUCCESS` 以外。

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

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

  パラメタ: | ctx -- その時点のコンテキスト。 cache -- The target cache object.
  戻り値: | The max number of entries of the cache object.