SuperAPI AI 工具集

durex

通用与其它

查看项目

更新于 10-16 04:58

技能介绍

用途:Durex 为 Elixir/Phoenix 项目的 GenServer 提供状态检查点,将状态写入外部存储(Redis 或 Tigris),用于崩溃恢复和节点迁移。通过 /durex 子命令调用。

主要能力:bootstrap 子命令把 Durex 加入项目(依赖、配置、可选 Redis 监督进程);add <Module> 子命令为已有 GenServer 模块添加检查点;help 显示子命令列表。

使用方式:bootstrap 时先选择存储后端。Redis 需在监督树中有 Redix 连接,配置 config :durex, Durex.Store.Redis, connection: MyApp.Redis,并添加 {:redix, "~> 1.5"}。Tigris 通过 S3 兼容 API 做持久化对象检查点,需在 runtime.exs 配置 bucket、access_key_id、secret_access_key、prefix,并添加 {:req, "~> 0.5"}。依赖为 {:durex, github: "agoodway/durex", branch: "main"}。add 时在 use GenServer 后加 use Durex 及 store、interval、ttl、version 选项,并实现 serialize/1、deserialize/1、checkpoint_key/1 三个回调,在 init/1 中调用 Durex.start_sync 与 Durex.maybe_restore,在 terminate/2 中调用 Durex.checkpoint。

适用场景:需要 GenServer 状态持久化、崩溃后恢复或跨节点迁移的 Elixir 应用。

限制:状态必须是 map(结构体可以,关键字列表和元组不支持);durex 键为保留键;use Durex 必须放在 catch-all handle_info 之前,否则会遮蔽同步处理器;JSON 往返会把原子键转为字符串,deserialize/1 需用 String.to_existing_atom/1 处理;序列化格式变化时需提升 :version 以丢弃旧检查点。其余细节暂未提供。