# @elysiumjs/mnemosyne 中文文档

规范地址：https://npmcn.com/package/%40elysiumjs/mnemosyne/

版本：0\.8\.1
npm 元数据更新时间：2026-11-13T03:09:13.337Z
中文译文更新时间：2026-11-13T15:55:05.499Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40elysiumjs/mnemosyne
原文对照：https://npmcn.com/package/%40elysiumjs/mnemosyne/?lang=original
项目主页：https://github.com/na2axl/elysiumjs/tree/main/@elysiumjs/mnemosyne#readme
源码仓库：https://github.com/na2axl/elysiumjs

弃用说明：has moved into @elysiumjs/olympus: import from @elysiumjs/olympus/mnemosyne; the Redis cache store is in @elysiumjs/redis\.

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：142 kB，19 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：4 个
- peer 依赖：@elysiumjs/core ^0\.24\.0，@elysiumjs/redis ^0\.1\.13
- 首次发布：2026-02-24T00:18:59.404Z
- 最新版本发布：2026-11-11T19:37:55.391Z
- 近 30 天下载量：3741（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：20（近 12 个月 20 个）

## 中文简介

Elysium.js应用的数据库和缓存

## 安装

```sh
npm install @elysiumjs/mnemosyne
```

也可以使用：`pnpm add @elysiumjs/mnemosyne`、`yarn add @elysiumjs/mnemosyne`、`bun add @elysiumjs/mnemosyne`

## README

# @elysiumjs/ mnemosyne (英语)

Elysium.js应用的数据库抽象和缓存.

## 安装

```bash
bun add @elysiumjs/mnemosyne
```

## 使用量

`MnemosyneModule` 提供缓存( n)`Cache.redis` 财务报告和审定财务报表 `Cache.memory`)和 `db:seed` 命令。 数据库驱动模块,例如 `DrizzleModule` 从 `@elysiumjs/mnemosyne-drizzle` 为您导入它, 因此您只有在想要配置缓存或者在没有数据库的情况下使用缓存时才会自己添加 :

```ts
import { Application, RedisModule } from '@elysiumjs/core';
import { MnemosyneModule } from '@elysiumjs/mnemosyne';

@Application.register({
    modules: [
        RedisModule.with({
            default: 'cache',
            connections: { cache: { url: process.env.REDIS_URL! } }
        }),
        // Opt out of a cache with `redis: false` or `memory: false`.
        MnemosyneModule.with({ cache: { memory: { ttl: 60_000, lruSize: 5000 } } })
    ]
})
export class App extends Application {}
```

任何 Keyv 商店都可以用它自己的缓存备份 `stores`,读取 `Cache.store(name)`在云花岗工人, `KeyvWorkersKV` 从 `@elysiumjs/runtime-workers` 存储 KV 命名空间中的条目 :

```ts
import { KeyvWorkersKV } from '@elysiumjs/runtime-workers';

MnemosyneModule.with({
    cache: { redis: false, stores: { kv: () => new KeyvWorkersKV({ binding: 'CACHE' }) } }
});

await Cache.store('kv').set('greeting', 'hello', 120_000);
```

## 种子

一个渗出器会写入应用程序需要运行的行,例如引用数据. 把它列入 `seeders` 模块,以及 `styx db:seed` 运行在那个模块,所以它 `run` 在自己的交易中, 使用模块的服务 :

```ts
import { Service } from '@elysiumjs/core';
import { Seeder } from '@elysiumjs/mnemosyne';

@Seeder.register()
export class CountriesSeeder extends Seeder {
    protected async run(@Service.inject() countries: CountryRepository): Promise<void> {
        await countries.upsertMany(await readCountries());
    }
}

@Seeder.register({ after: [CountriesSeeder], manual: true })
export class CitiesSeeder extends Seeder {
    protected async run(@Service.inject() cities: CityRepository): Promise<void> {
        await cities.upsertMany(await readCities(this.input.file));
    }
}

@Module.register({ services: [CountryRepository, CityRepository], seeders: [CountriesSeeder, CitiesSeeder] })
export class GeoModule extends Module {}
```

```bash
styx db:seed                                  # every seeder that is not manual
styx db:seed --only geo.cities --file cities.zip
styx db:seed --arg region=africa --list       # prints the order, runs nothing
```

-   播种者每召出一来,就写作上起.
-   以其模块和类命名,不包含 `Module` 财务报告和审定财务报表 `Seeder` 后缀,在kebab案中`geo.cities` (见上文). `name` 再来一个.
-   `after` 列出两个运行时先运行的种子类。 它设定了命令,而不添加: `--only geo.cities` 运行 `geo.cities` 一个人 给一个功能, `after: () => [CountriesSeeder]`,当导入周期未定义类别时.
-   `manual: true` 种子只运行于 `--only` 给他们起名字. `env` 将植入物限制在一些环境中 `connection` 选择交易的连接.
-   `--file` 编辑 `--arg key=value` 双向种子到达种子者 `this.input.file` 财务报告和审定财务报表 `this.input.args`。 。 。 .
-   `styx make:seeder --name CountriesSeeder --module geo` 写入 `seeders/countries.seeder.ts`。 。 。 .

## 名单

`Listing.define()` 说明什么客户端可以过滤和排序一个列表,以及它如何页面. `Listing.parse()` 验证查询字符串和仓库 `list()` 运行它:

```ts
import { Listing } from '@elysiumjs/mnemosyne';

const PostListing = Listing.define(Post, {
    filters: { status: ['eq', 'in'], title: ['contains'] },
    sort: ['createdAt', 'title'],
    defaultSort: '-createdAt'
});

@Http.get('/', { response: Listing.pageSchema(PostResource) })
public list(@Http.query(Listing.schema(PostListing)) query: Listing.Params<typeof PostListing>) {
    return this.posts.list(Listing.parse(PostListing, query));
}
```

-   光标 pagining 是默认值 : `cursor` 在上一页最后一行之后并有一个页面给出的分数 `{ data, nextCursor }`。页数保持稳定,同时增加行数,每行费用不变.
-   `pagination: 'offset'` 从 1 到 1 的页码 `page`页面 `{ data, page, limit, total }`,合计数行的过滤器匹配。 它适合跳到一页的桌子.
-   `Listing.pageSchema(item)` 财务报告和审定财务报表 `Listing.offsetPageSchema(item)` 描述各页. `Listing.page()` 财务报告和审定财务报表 `Listing.offsetPage()` 建造它们, `Listing.mapPage(page, map)` 绘制他们的行图,例如模型到资源,以及 `Listing.filterPage(page, keep)` 保持通过上游的行.
-   页面及其图案都有标记,以便截取器自行制作: `Listing.isPage(value)` 财务报告和审定财务报表 `Listing.paginationOf(page)` 读取一页, `Listing.pageSchemaPagination(schema)` 财务报告和审定财务报表 `Listing.itemSchemaOf(schema)` 读取一个页面计划.

模型和寄存器都是用一个驱动软件包来建造的. 见 [`@elysiumjs/mnemosyne-drizzle`](https://npmcn.com/package/%40elysiumjs/mnemosyne-drizzle/README.md)。 。 。 .

## 许可证

这个项目根据Apache许可证2.0版本获得许可. 见 [自由主义](https://npmcn.com/package/LICENSE) 需要更多信息的文件.

## 常见问题

### @elysiumjs/mnemosyne 是什么？

Elysium\.js应用的数据库和缓存注意：该包已被作者标记为弃用——has moved into @elysiumjs/olympus: import from @elysiumjs/olympus/mnemosyne; the Redis cache store is in @elysiumjs/redis\.

### 如何安装 @elysiumjs/mnemosyne？

在项目目录运行 npm install @elysiumjs/mnemosyne，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@elysiumjs/core（^0\.24\.0）、@elysiumjs/redis（^0\.1\.13）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @elysiumjs/mnemosyne 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @elysiumjs/mnemosyne 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @elysiumjs/mnemosyne 可以商用吗？

@elysiumjs/mnemosyne 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @elysiumjs/mnemosyne 的下载量有多少？

根据 npm 官方下载统计，@elysiumjs/mnemosyne 在 2026/10/14 – 2026/11/12 这 30 天内被下载 3,741 次，日均约 125 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @elysiumjs/mnemosyne 还在维护吗？

最新版本 0\.8\.1 发布于 2026/11/12（1 天前）；至今共发布 20 个版本，其中过去 12 个月发布了 20 个；首次发布于 2026/02/24。作者已将其标记为弃用，新项目建议寻找替代方案。

