Riferimento rapido

Foglio di riferimento Erlang ETS (Erlang Term Storage)

Guida rapida di riferimento per Erlang ETS in Elixir ed Erlang: inizializzazione tabelle, permessi di accesso, tipi di tabella e attraversamento.

· Pubblicato

ETS (Erlang Term Storage) e un database chiave-valore in memoria integrato direttamente nel runtime Erlang/OTP (BEAM).

🔗 Correlato: Foglio di riferimento Linguaggio Elixir

Inizializzazione della tabella e operazioni di base

# Crea una nuova tabella con nome
table = :ets.new(:user_cache, [:set, :public, :named_table])

# Inserisce tuple nella tabella
:ets.insert(:user_cache, {:user_1, "Alice", 30})
:ets.insert(:user_cache, {:user_2, "Bob", 25})

# Cerca record per chiave
result = :ets.lookup(:user_cache, {:user_1})
# => [{:user_1, "Alice", 30}]

# Elimina un record o svuota la tabella
:ets.delete(:user_cache, :user_1)
:ets.delete_all_objects(:user_cache)

# Distrugge completamente la tabella
:ets.delete(:user_cache)

Tipi di tabella (Table Types)

Configura la semantica della tabella tramite le opzioni di creazione:

Type Duplicate Keys Ordering Notes
:set No Unordered Tipo predefinito; la chiave e il primo elemento; non ordinato
:ordered_set No Ordered Chiavi ordinate secondo l'ordinamento Erlang; ricerca O(log N)
:bag Yes Unordered Consente chiavi duplicate, ma non tuple esattamente identiche
:duplicate_bag Yes Unordered Consente tuple esattamente identiche

Controlli di accesso (Access Controls)

  • :protected: Tutti i processi possono leggere; solo il proprietario puo scrivere (Predefinito).
  • :public: Qualsiasi processo puo leggere e scrivere simultaneamente.
  • :private: Solo il processo proprietario puo leggere e scrivere.

Attraversamento su :ordered_set (Traversal)

# Funzioni di navigazione tra le chiavi
first_key = :ets.first(:user_cache)
next_key  = :ets.next(:user_cache, first_key)
prev_key  = :ets.prev(:user_cache, next_key)
last_key  = :ets.last(:user_cache)

Argomenti correlati