我正在编写一个Elixir应用程序,该应用程序需要一个注册表来存储哪个pid属于哪个用户的映射。我将在受监管的应用程序中为每个用户提供一个GenServer。我有一个使用ETS使用一个节点但使用2个以上节点的基本示例,我不能使用ETS,因为它不支持集群/复制。拥有分布式缓存还有哪些其他选择?通过进行一些研究,我的选择是使用数据库(例如Redis)或使用Amensia。
假设您不想在整个群集中重复,则只需在全局范围内注册每个GenServer。
GenServer.start_link(__MODULE__, args, [name: {:global, user_id}]
然后您可以简单地查找:global.whereis_name(user_id)
以获取pid。如果该进程终止,则会自动取消注册。这是Erlang全局模块的文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句