# 7.25.4. grn_cache¶

## 7.25.4.1. Summary¶

Note

This API is experimental.

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.

## 7.25.4.2. Example¶

Here is an example that change the current cache object.

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. Reference¶

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)

Creates a new cache object.

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

Parameters: ctx – The context. 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.

Parameters: ctx – The context. cache – The cache object to be freed. GRN_SUCCESS on success, not GRN_SUCCESS otherwise.
grn_rc grn_cache_current_set(grn_ctx *ctx, grn_cache *cache)

Sets the cache object that is used in select command.

Parameters: ctx – The context. cache – The cache object that is used in select command. GRN_SUCCESS on success, not GRN_SUCCESS otherwise.
grn_cache *grn_cache_current_get(grn_ctx *ctx)

Gets the cache object that is used in select command.

Parameters: ctx – The context. The cache object that is used in select command. It may be NULL.
grn_rc grn_cache_set_max_n_entries(grn_ctx *ctx, grn_cache *cache, unsigned int n)

Sets the max number of entries of the cache object.

Parameters: ctx – The context. cache – The cache object to be changed. n – The new max number of entries of the cache object. GRN_SUCCESS on success, not GRN_SUCCESS otherwise.
unsigned int grn_cache_get_max_n_entries(grn_ctx *ctx, grn_cache *cache)

Gets the max number of entries of the cache object.

Parameters: ctx – The context. cache – The target cache object. The max number of entries of the cache object.