Erlang中文论坛

标题: Erlang ETS表相关知识点 [打印本页]

作者: NESS    时间: 2015-3-24 14:26
标题: Erlang ETS表相关知识点
在接触的新项目中,大量使用了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}]。






欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3