gpt4 book ai didi

elixir - 如何在不扫描整个表的情况下检索 ets 键列表?

转载 作者:行者123 更新时间:2023-12-04 17:33:19 26 4
gpt4 key购买 nike

我通过 elixir 使用 ets 作为一个简单的内存持久层来存储和检索键,以及偶尔的 foldl,这涉及减少许多具有不同值的重复键。我正在使用包选项。

是否有一种简单的,也许是 O(1) 的方法来检索仅包含当前键的列表,而无需进行更复杂的表遍历或匹配或折叠?

欢迎使用 Erlang 或 Elixir 语法响应。

:ets.new(:cache, [:bag, :named_table, :protected])

我有一个由整数索引的原子键的静态映射,我用来帮助插入。但并不是所有的 key 都用过..
chunk_key_map = %{2 => :chunk_key_2, ..... 28 => :chunk_key_28}

如果没有快速的方法,我知道我可以做一个 ets:lookup 尝试我的每个静态原子键值并测试 != [] 并生成我自己的列表,但想看看 ets 是否支持这样的功能。

谢谢

最佳答案

谢谢,这让我走上了正确的轨道:)

同样的事情,但将前一个键作为累加器传递:

def key_stream(table_name) do
Stream.resource(
fn -> :ets.first(table_name) end,
fn :"$end_of_table" -> {:halt, nil}
previous_key -> {[previous_key], :ets.next(table_name, previous_key)} end,
fn _ -> :ok end)
end

关于elixir - 如何在不扫描整个表的情况下检索 ets 键列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122608/

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