---
name: "Alzabo::Runtime::UniqueRowCache"
section: "3pm"
platform: "linux"
package: "libalzabo-perl"
version: "0.92-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Alzabo::Runtime::UniqueRowCache"
---

# Alzabo::Runtime::UniqueRowCache(3pm)

Implements a row cache for Alzabo

## NAME

Alzabo::Runtime::UniqueRowCache - Implements a row cache for Alzabo

## SYNOPSIS

```
  use Alzabo::Runtime::UniqueRowCache;
  Alzabo::Runtime::UniqueRowCache->clear();
```

## DESCRIPTION

This is a very simple caching mechanism for `"Alzabo::Runtime::Row"` objects that tries to ensure that for there is never more than one row object in memory for a given database row.

To use it, simply load it.

It can be foiled through the use of `"Storable"` or other "deep magic" cloning code, like in the `"Clone"` module.

The cache is a simple hash kept in memory.  If you use this module, you are responsible for clearing the cache as needed.  The only time it is cleared automatically is when a table update or delete is performed, in which case all cached rows for that table are cleared.

In a persistent environment like mod\_perl, you should clear the cache on a regular basis in order to prevent the cache from getting out of sync with the database.  A good way to do this is to clear it at the start of every request.

## METHODS

All methods provided are class methods.

- •

  clear

  This clears the entire cache

- •

  clear\_table( `$table_object` )

  Given a table object, this method clears all the cached rows from that table.

- •

  row\_in\_cache( `$table_name`, `$row_id` )

  Given a table *name* and a row id, as returned by the `"Alzabo::Runtime::Row->id_as_string"` method, this method returns the matching row from the cache, if it exists.  Otherwise it returns undef.

- •

  delete\_from\_cache( `$table_name`, `$row_id` )

  Given a table *name* and a row id, as returned by the `"Alzabo::Runtime::Row->id_as_string"` method, this method returns the matching row from the cache.

- •

  write\_to\_cache( `$row_object` )

  Given a row object, this method stores it in the cache.

## AVOIDING THE CACHE

If you want to not cache a row, then you can pass the "no\_cache" parameter to any table or schema method that creates a new row object or a cursor, such as `"Alzabo::Runtime::Table->insert()"`, `"Alzabo::Runtime::Table->rows_where()"`.

## AUTHOR

Dave Rolsky, \<autarch@urth.org\>
