# Caching

Novel's philosophy of low overhead affects the function of caching because it do not use traditional caching services.

Caching in Novel makes use of PostgreSQL's `SKIP UNLOGGED` feature. So the caching layer is within the database layer itself.

The cache is located in the `cache` table.&#x20;

## Usage

You can use the cache through

{% code title="feature.ts" lineNumbers="true" %}

```typescript
import cache from 'novel/cache';

await cache.set('key', value);

await cache.get('key');
```

{% endcode %}

The cache key is hashed and stored in the cache table.

### `cache.get(key: string)`

You can get a cached value from the database through a simple function.

### `cache.set(key: string, value: any, ttl?: number)`

You can set the value as well as a TTL for the key you want to set

### `cache.clear(key: string)`

Remove a key from the cache.

### `cache.touch(key: string, ttl: number)`

If you want to extend the TTL of a cached key.
