gpt4 book ai didi

Elixir ETS key 模式匹配

转载 作者:行者123 更新时间:2023-12-02 01:13:06 28 4
gpt4 key购买 nike

我正在使用 ETS 使用 ecto 从 postegress 缓存数据库模式
以下是这些示例:

table = :ets.new(:cache_name,[:set, :protected])


并包括这些注册表:

:ets.insert(table,{:first_table,{1}})

:ets.insert(table,{:first_table,{5}})

:ets.insert(table,{:second_table,{1}})


但是第二个替换了第一个,因此我连接了表名和 id 以获得唯一键 :ets.insert(table,{:first_table1,{1}})对于这些注册表,但目前我想要第一个表的第一个注册表我有问题,因为我包含相同的第二个注册表项,它检索两个注册表:

:ets.match_object(table,{:"_",{1}})


我如何向 ETS 指定如果 key 包含 table_name 检索这些注册表?

最佳答案

我认为您无法将原子名称的一部分与 :ets.match_object 匹配.如果您想要基于表和 id 以及仅表进行查找,我建议使用表名和 id 的元组作为键:

table = :ets.new(:cache_name, [:set, :protected])

:ets.insert(table, {{:first_table, 1}, {1}})
:ets.insert(table, {{:first_table, 2}, {5}})
:ets.insert(table, {{:second_table, 1}, {1}})

# Get table = :first_table, id = 1
IO.inspect :ets.lookup(table, {:first_table, 1})
# Get table = :first_table and any id
IO.inspect :ets.match_object(table, {{:first_table, :_}, :_})

输出:
[{{:first_table, 1}, {1}}]
[{{:first_table, 1}, {1}}, {{:first_table, 2}, {5}}]

关于Elixir ETS key 模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44034196/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com