ETS 与 OTP 应用全解析
1. ETS 表与 GenServer 的选择
在某些场景下,ETS 表可作为一种优化工具。它在简单场景中极为高效,但相比服务器进程,其功能和灵活性稍逊一筹。
若不确定该使用 GenServer 还是 ETS 表,建议先从 GenServer 入手。这是一个简单的解决方案,在许多情况下,其性能已足够。若发现特定服务器成为瓶颈,可考虑使用 ETS 表。多数情况下,迁移到 ETS 表只需更改实现方式。例如,对比 KeyValue 模块和 EtsKeyValue 模块,会发现它们具有相同的公共接口,这使得可以创建一个通用的 Bench 模块来同时处理两者。
在基于 ETS 的键值存储中仍使用 GenServer,其唯一目的是保持表的存活。因为当拥有者进程终止时,ETS 表会从内存中释放,所以需要一个独立的、长期运行的进程来创建和拥有该表。
2. 其他 ETS 操作
2.1 基本操作
目前,我们仅涵盖了基本的插入和基于键的查找操作,这些操作无疑是最常用的,此外还有 :ets.delete/2 ,它可删除与给定键关联的所有行。基于键的操作速度极快,在构建表时应牢记这一点,目标是最大化基于键的操作,从而使与 ETS 相关的代码尽可能快速。
2.2 非键查找与修改
偶尔需要执行非键查找或修改操作,即根据值的条件检索行列表,有以下几种方法:
- 将表转换为列表 :使用 :et
超级会员免费看
订阅专栏 解锁全文
993

被折叠的 条评论
为什么被折叠?



