我在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
Run Code Online (Sandbox Code Playgroud)
现在,现在许多函数都在调用get_trackerid函数,每次调用函数时,都会调用数据库.
有没有办法在elixir中编写函数,结果存储在局部变量中.因此,当下次请求同一个imei的trackerid时,我可以从本地变量本身获取数据.
我认为elixir中没有全局变量的概念,所以这不是一个选项,对吧?
您所询问的内容称为" memoization ".我提到如果你关心谷歌,看看你是否能找到更多关于这个主题的信息.
这是一篇很棒的博客文章,讨论了Elixir中的记忆技术:https://web.archive.org/web/20161116091132/http://ineverfinishanyth.in/2014/01/20/memoization-in-elixir
TL; DR
当您尝试进行计算以查看答案是否已存在时,构造缓存并检查缓存.在博客发布的情况下,他构建了一个键值存储作为缓存,但显然你应该构造什么样的缓存将高度依赖于你正在缓存的数据.
| 归档时间: |
|
| 查看次数: |
7681 次 |
| 最近记录: |