设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 20461|回复: 0
打印 上一主题 下一主题

Erlang ETS表相关知识点

[复制链接]
跳转到指定楼层
楼主
发表于 2015-3-24 14:26:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在接触的新项目中,大量使用了ETS表用于临时存储Erlang数据,于是对ETS表的相关知识稍作总结。
ETS是Erlang用于高效存储大量数据的系统模块之一(另一个是DETS),ETS表中的数据存储是临时的,当表释放时,相应的数据也会被随之丢弃。
ETS向我们提供了大型的“键-值”搜索表,一个ETS表实际上就是一系列的Erlang元组,元组中的第一个(默认)为表的键,我们的操作基本都是基于键来实现的,若向表中插入元组,则还需要考虑到表的类型,ETS表共有四种类型:set,orderde set,bag,duplicate bag。四种类型的区别在于,set类型下表中的元组键值都不能相同,ordered set类型下元组会进行排序,bag类型下同一表中的多个元组可以有相同的键值,但是不能有完全相同的两个元组,在duplicate bag类型下同一表中可以存在两个完全相同的元组。
一个ETS表隶属于创建它的进程,当进程死掉或者调用了ets:delete,ETS表也会随之被删掉。
下面介绍一下表的4种基本操作:
1,  创建一个新表:ets:new(TabName,[Opt])
2,  向表中插入一个或多个元组:ets:insert(TabName,X)
3,  在表中查找元组:ets:lookup(TabName,Key)
4,  释放表:ets:delete(Tab)
注:ets:new函数中第二个参数[Opt]是一个选项列表,取值如下:
set/ordered_set/bag/duplicate_bag,表的类型。
private/public/protected,表的打开方式,决定对表的读写权限。
Named_table,命名表,如果有此选项,则在后面可以用Name操作表。
{keypos,K},使用K作为键的位置,通常为1,只有在存储记录时才需要这个选项(记录的第一个元素总是记录名)。
打开一个ETS表不带任何选项时,默认选项为[set,protected,{keypos,1}]。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-11-23 17:33 , Processed in 0.372494 second(s), 9 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表