Знайомство з Erlang [11]
При роботі з php нам просто необхідно користуватись memcached/redis
для зберігання в оперативній памяті певних потрібних для роботи даних.
У нашому випадку, нам не потрібно нічого окрім самого erlang -
ерланг/OTP містить в собі ETS - erlang term storage.
Також існує DETS - disk-based term storage -
можна сказати що це той же ETS, котрий зберігає дані на диску, а не в оперативній памяті.
Перейдемо до коду:
1> Table = ets:new(my_table, [set, public]).
#Ref<0.3191872875.2723282945.79717>
2> ets:insert_new(Table, {<<"1">>, <<"test77">>}).
true
3> ets:insert_new(Table, {<<"2">>, <<"779">>}).
true
4> ets:insert_new(Table, {<<"3">>, <<"тест 99"/utf8>>}).
true
5> ets:match(Table, {'$1', '$2'}).
[[<<"3">>,<<209,130,208,181,209,129,209,130,32,57,57>>],
[<<"1">>,<<"test77">>],
[<<"2">>,<<"779">>]]
6> ets:delete(Table, <<"2">>).
true
7> ets:match(Table, {'$1', '$2'}).
[[<<"3">>,<<209,130,208,181,209,129,209,130,32,57,57>>],
[<<"1">>,<<"test77">>]]
8> ets:delete(Table).
true
9> Table2 = ets:new(my_table, [set, public]).
#Ref<0.3191872875.2723282945.79856>
10> ets:insert_new(Table2, {<<"1">>, <<"test77">>}).
true
11> ets:insert_new(Table2, {<<"2">>, <<"779">>}).
true
12> ets:insert_new(Table2, {<<"3">>, <<"тест 99"/utf8>>}).
true
13> ets:match(Table2, {<<"1">>, '$2'}).
[[<<"test77">>]]
14> ets:match(Table2, {<<"7">>, '$2'}).
[]
15> ets:delete(Table2).
true
ETS та DETS в ерланг-документації -
https://erlang.org/doc/man/ets.html
https://erlang.org/doc/man/dets.html
Також erlang/OTP містить в собі Mnesia - базу даних, побудовану на основі ETS та DETS
https://erlang.org/doc/man/mnesia.html
Чи чули ви про WhatsApp?
Чи знаете ви, що всі повідомлення у WhatsApp зберігаються-крутяться в ETS/Mnesia в оперативній памяті? :)
Продовження прикладів роботи з ETS
Посилання
https://erlang.org/doc/man/ets.html
https://erlang.org/doc/man/dets.html
https://erlang.org/doc/man/mnesia.html