
# 存储

> 配置 KV 存储、缓存和数据库连接。

::note
本页所有示例都假设已在 `nitro.config.ts` 中导入以下内容：

```ts
import { defineConfig } from "nitro";
```
::

### `kv`

- 默认值：`{}`{lang=ts}

KV 存储配置。

```ts
export default defineConfig({
  kv: {
    redis: {
      driver: "redis",
      url: "redis://localhost:6379",
    },
  },
});
```

使用 `$development` 键可在开发模式下覆盖挂载配置：

```ts
export default defineConfig({
  $development: {
    kv: {
      redis: {
        driver: "fs",
        base: "./data/redis", // use filesystem in development
      },
    },
  },
});
```

`$development` 仅适用于开发服务器。预渲染时使用 `$prerender` 覆盖挂载配置。`driver` 不同时会替换整个挂载项；`driver` 相同时则会深度合并选项。

::note
该选项此前名为 `storage`，目前仍可作为已弃用的别名使用。已弃用的 `devStorage` 选项由 `$development`（和 `$prerender`）中的 `kv` 取代。
::

:read-more{to="/docs/storage"}

### `cache`

- 默认值：`{}`{lang=ts}

[缓存函数和处理器](/docs/cache)及 `cache` 路由规则使用的缓存存储和全局默认选项。

```ts
export default defineConfig({
  cache: {
    driver: "fs", // "memory" (default) | "fs" | "kv"
    fs: { dir: ".data/cache" },
    defaults: { maxAge: 60, swr: true },
  },
});
```

- `driver`：`memory`（进程内 LRU）、`fs`（文件系统，仅兼容 Node.js 的运行时）或 `kv`（[`kv`](#kv) 存储层）。配置了 `cache` KV 挂载点时默认为 `kv`，否则默认为 `memory`。
- `memory`：`memory` 驱动的 `maxSize` 和 `maxBytes` 限制。
- `fs`：`fs` 驱动的 `dir`（默认为 `.data/cache`）。
- `defaults`：所有缓存的全局默认选项（`maxAge`、`swr`、`staleMaxAge`、`maxResolveTime`、`base`，以及仅适用于处理器的 `varies`、`allowQuery`、`allowCookies`、`allowAuthorization`、`sendCacheControl`、`cacheStatusHeader`、`maxBodySize`）。

:read-more{to="/docs/cache#cache-storage"}

### `database`

数据库连接配置。需要启用 `experimental.database: true`。

```ts
export default defineConfig({
  database: {
    default: {
      connector: "sqlite",
      options: { name: "db" },
    },
  },
});
```

:read-more{to="/docs/database"}

### `devDatabase`

开发模式下的数据库连接配置覆盖项。

```ts
export default defineConfig({
  devDatabase: {
    default: {
      connector: "sqlite",
      options: { name: "db-dev" }, // separate dev database
    },
  },
});
```
