7.25.4. grn_cache
#
7.25.4.1. 概要#
注釈
このAPIは実験的です。
grn_cache
は select コマンドのレスポンスを保持するためのデータストアです。一般的なオブジェクトのキャッシュとして使うものではありません。あくまで 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
のこともあります。