转载一篇 地址http://www.iteye.com/topic/689089
record作为erlang的一种数据结构(特殊的Tuple,类似数组),通常用于函数量传递.
我们也可以选择ETS内存表作为存放record,Ets非常适合大量临时数据存储,最重要
的是ETS可以和record进行无逢结合.
%%在Eshell下声明record users
1> rd(users, {uid,website="t.qq.com/lajabs",name,time=time()}).
users
%%对ets建表,并创建以record元素uid作为索引键,以下的增删改查都将使用它
2> ets:new(users,[public,set,named_table,{keypos, #users.uid}]).
users
%%创建record,并对元素赋值
3> Users=#users{uid=101,name=lajabs}.
#users{uid = 101,website="t.qq.com/lajabs",name = lajabs,
time = {16,48,32}}
%%将创建好的record存入ets
4> ets:insert(users,Users).
true
%%创建第二个record
5> Users2=#users{uid=102,name=laja2}.
#users{uid = 102,website="t.qq.com/lajabs",name = laja2,
time = {16,49,16}}
%%把record users也存入ets,这时users表中有2笔记录
6> ets:insert(users,Users2).
true
%%尝试查询uid(索引键)为102的记录,成功返回record(之前定义的变量Users2),需要注意返回的是列表(带[])
7> ets:lookup(users,102).
[#users{uid = 102,website="t.qq.com/lajabs",name = laja2,
time = {16,49,16}}]
%%对ets更新record,将元素name改为'hello'
8> ets:update_element(users,102,{#users.name, hello}).
true
%%查看修改后的结果,发现已经更改成功
9> ets:lookup(users,102).
[#users{uid = 102,website="t.qq.com/lajabs",name = hello,
time = {16,49,16}}]
%%删除uid(索引键)为102的记录
10> ets:delete(users,102).
true
%%查看结果,已删除成功,返回的是空列表[]
11> ets:lookup(users,102).
[]
%%查询记录中的某个元素值可以用以下方式
12> ets:lookup_element(users,101,#users.name).
lajabs
分享到:
相关推荐
通过分析`ets_test.erl`源码,我们可以深入理解Erlang中的Record是如何与ETS结合使用的,以及如何在实践中提高代码效率和可维护性。不过,由于具体源码未给出,这部分只能进行推测,实际的内容还需要查看源码文件...
这些基准测试的结果提供了对不同数据结构在Erlang ETS中的表现进行深入分析的基础。 #### 数据结构简介 1. **AVL平衡二叉树**:是一种自平衡的二叉查找树,能够在添加或删除操作后自动保持平衡状态,从而确保查找...
- **分布式支持**:`gproc`的设计考虑到了分布式系统,可以在多节点Erlang集群中无缝工作。 - **类型安全**:`gproc`支持基于类型的名字注册,增加了代码的可读性和安全性。 - **灵活的数据结构**:`gproc`不仅...
主要介绍了Erlang中的Record详解,本文讲解了定义Record、创建Record、访问Record、更新Record、匹配Record和Guard语句、使用Record等内容,需要的朋友可以参考下
Mnesia是Erlang的分布式事务型数据库系统,它结合了ETS和DETS的优点。Mnesia可以在内存和磁盘上存储数据,并且支持跨多个节点的复制和事务操作。这使得Mnesia成为构建分布式应用程序的理想选择。Mnesia提供了记录...
**标题解析:** "erlang高级原理和应用PPT" 这个标题表明了文档的主要内容,即关于Erlang编程语言的高级概念和技术在实际应用中的...通过链接提供的博客和PPT的结合学习,可以更好地掌握Erlang编程并提升相关技能。
Erlang和RabbitMQ是两个在分布式系统和消息队列领域中至关重要的技术。Erlang是一种函数式编程语言,以其并发性、容错性和热代码升级能力而闻名,而RabbitMQ则是基于Erlang构建的一个开源消息代理,用于实现应用程序...
Erlang的工具箱提供了多种性能优化工具,比如ETS和Dets的选择,以及erts_debug模块,可以帮助开发者发现性能瓶颈并加以改进。 #### 16. 开发社区和资源 Erlang有活跃的开源社区和丰富的学习资源,包括书籍、教程、...
"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心概念和特性。 ### 1. 函数式编程基础 Erlang基于函数式编程范式,这意味着程序由纯函数构成,没有副作用。...
Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...
在本文中,我们将介绍如何使用Erlang开发一个简单的游戏服务器,并讨论其优点和实现细节。 Why Erlang? Erlang是一种轻量级的语言,非常适合开发高性能的服务器应用程序。其主要优点有: * 轻量级process:...
这本书深入浅出地介绍了Erlang在分布式系统、并发处理以及高可用性设计中的应用,同时结合 OTP 提供了强大的工具和库支持。通过阅读此书,读者可以掌握如何利用Erlang和OTP构建高效、容错的实时系统。 Erlang是一种...
它提供了软实时性,大部分数据存储在本地内存,支持水平分割和数据冗余,可以自动在节点间进行数据迁移。Mnesia 与其他数据库(如UnixODBC)可交互,但存在网络分区可能导致数据不一致的问题。 在实践中,Ejabberd...
作为“源码软件”,Erlang 25.0同样提供了源代码,开发者可以深入研究其内部工作原理,进行定制化开发,或者为Erlang社区贡献代码。对于开发者而言,理解Erlang的源码可以帮助他们更好地利用这个平台,实现更高效、...
通过这些组件,Erlang应用可以实现异步处理任务,提高系统的响应速度和整体性能。例如,一个高流量的Web服务可以使用RabbitMQ来缓存和分发请求,避免直接处理导致的延迟或崩溃。 总之,Erlang作为一种强大且适应性...
安装完成后,可以使用RabbitMQ的管理界面或命令行工具进行配置和管理,以满足特定的业务需求。 总的来说,RabbitMQ 3.9.13与Erlang 24.2结合使用,为开发高效、可靠的分布式系统提供了一个强大的消息中间件解决方案...
ETS的另一大特点是支持丰富的查询操作,如match_spec,这使得开发者可以进行复杂的查找和过滤。然而,由于数据存储在内存中,当Erlang节点崩溃时,ETS中的数据将会丢失。因此,如果需要持久化数据,就需要考虑使用...
这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...
概要该项目允许通过 http 查询 Erlang ETS 表,以便其他语言/机制可以轻松获取数据库结果。例子该项目可以作为依赖项包括在内。 它在每个应用程序 env http_port的指定端口上启动牛仔应用程序,或者让底层操作系统...