如何在elixir模块中创建全局变量
我在elixir中有以下代码:如何在elixir模块中创建全局变量,elixir,Elixir,我在elixir中有以下代码: def get_trackerid(imei) do client = get_new_client() {:ok, result} = :cqerl.run_query(client, "SELECT * FROM trackers_by_imei where imei = \'#{imei}\';") row = :cqerl.all_rows(result) end 现在,许多函数都在调用get_trackerid函数,每次调用该函数时,都会调
def get_trackerid(imei) do
client = get_new_client()
{:ok, result} = :cqerl.run_query(client, "SELECT * FROM trackers_by_imei where imei = \'#{imei}\';")
row = :cqerl.all_rows(result)
end
现在,许多函数都在调用get_trackerid函数,每次调用该函数时,都会调用数据库
有没有一种方法可以在elixir中编写函数,从而将结果存储在局部变量中。因此,当下次请求相同imei的trackerid时,我可以从局部变量本身获取数据
我认为elixir中没有全局变量的概念,所以这不是一个选项,对吗?您有几个选项可以在elixir中保存状态 如果此方法是运行的模块的一部分,则可以使用
state
参数来缓存值
您还可以使用缓存来缓存这些值。这将在GenServer内部和外部工作。您所询问的内容称为“”。我提到,如果你喜欢谷歌,看看你是否能找到更多关于这个主题的信息 这是一篇很棒的博客文章,讨论了长生不老药中的记忆技巧: TL;DR 构造一个缓存,并在尝试执行计算时检查缓存,以查看答案是否已经存在。在那篇博客文章中,他构建了一个键值存储作为缓存,但显然,您应该构建什么样的缓存在很大程度上取决于您正在缓存的数据
提供的链接已断开。@tunedconsulting我已将链接更改为指向该网页的google缓存版本。新链接在此处(:我修改了链接,指向链接的internet存档副本。_Teach_a_man_to_fish_moment:将来,与其抱怨链接被破坏,不如自己尝试在internet存档中查找链接并更新条目。只是一个建议。这也会非常有帮助