💧 Elixir Intermediate

What is the Registry module in Elixir?

Answer

The Registry module provides a process registry backed by ETS — a way to give processes names beyond simple atoms (which require globally unique names). Unique registry: one process per key: Registry.start_link(keys: :unique, name: MyApp.Registry); {:ok, pid} = MyWorker.start_link(user_id: 42); Registry.register(MyApp.Registry, "user:42", %{}); Registry.lookup(MyApp.Registry, "user:42"). Duplicate registry: multiple processes per key (like pub-sub). Use in GenServer: register via via_tuple: def start_link(name), do: GenServer.start_link(__MODULE__, [], name: {:via, Registry, {MyApp.Registry, name}}). Then address by name: GenServer.call({:via, Registry, {MyApp.Registry, name}}, :ping). Registry is essential for per-entity processes — one process per user session, per device, per chat room. It scales to millions of entries and handles process death/deregistration automatically.