erlang ets表的使用

erlang ets表的使用

ETS表的基本:

  1. ETS 表可以用来高效存储海量的erlang数据,ETS提供大型的键-值查询表,
  2. ETS是相当高效的:可以用它存储海量的数据(只要有足够的内存).最常用的表操作是插入和查找。
  3. ETS表的数据保存在内存里,他们是易失的。当ETS表被丢弃或控制它的进程终止时,数据就会被删除.
  4. ETS表是底层运行系统里实现的,ETS表没有垃圾回收机制,即使ETS表及其巨大也不会有垃圾回收的负担,不过,创建和访问ETS对象任然会带来少许开销.

ETS表的实例操作:
1. 创建一个ETS表: new/2->atom
new(name,option) 参数介绍:
name:ETS表名
option:一列选项
1) set | ordered_set | bag | duplicate_bag 创建一个指定类型的表
2) private 创建一个私有表,只有主管进程才能读取和写入它
3)public 创建一个公共表 , 任何进程在知道此表的标示符时都可以读取和写入
4) protected 创建一个受保护的表, 任何进程在知道此表的标示符时都可以读取,但只有主管进程和已有写入权限
5)named_table 如果设置了此选项,Name就可以被用于后续的表操作
6){keypos,K} 用K作为键的位置,唯一需要使用这个选项是保存erlang记录,并且记录的第一个元素包含记录名的时候

2. 插入一个数据: insert/2 ->true

3.查询插入数据:tab2list/1 ->[Object]

4.返回节点所有的表以及删除一个表

B进程读取A进程ETS表的实例操作:

ETS表的各种方法
ets:all/0

获取所有的 ets 表

ets:delete/1

删除整张表

ets:delete/2

删除表里指定键的所有数据

ets:delete_all_objects/1

删除表里的所有数据

ets:delete_object/2

删除表里的指定数据

ets:file2tab/1

从一个文件读取一个 ETS 表

ets:first/1

获取 ETS 表里的第一个对象数据的键

ets:foldl/3

对 ETS 数据遍历循环操作

ets:fun2ms/1

把语法函数转为匹配规范的伪函数

ets:give_away/3

改变一个表的拥有者

ets:i/0

在输出端上打印显示所有 ETS 表的信息

ets:info/1

返回一个 ETS 表的信息

ets:info/2

返回给出的跟表相关的项的信息

ets:insert/2

向 ETS 表插入数据

ets:insert_new/2

向 ETS 表插入新数据

ets:is_compiled_ms/1

检测一个 Erlang 数据是否是一个有效已编译的匹配规范

ets:last/1

返回表里的最后一个键

ets:lookup/2

在 ETS 表里查出相应键的值

ets:lookup_element/3

返回 ETS 表里指定键的对象数据的第几个元素数据

ets:match/1 | ets:match/2 | ets:match/3

根据匹配模式匹配表里的对象数据

ets:match_delete/2 | ets:match_object/1 | ets:match_object/2 | ets:match_object/3

根据匹配模式删除表里的对象数据

ets:match_spec_compile/1

把一个匹配规范编译为它的内部表示形式

ets:match_spec_run/2

使用一个匹配规范来执行匹配操作

ets:member/2

判断表里面是否存在指定键的数据

ets:new/2

创建一个 ets 表

ets:next/2

返回表的下一个键

ets:prev/2

返回表的上一个键

ets:rename/2

重新给 ETS 表命名一个名字

ets:safe_fixtable/2

锁定一定 ETS 表使其可以安全遍历

ets:select/1

对 ETS 表里的数据进行匹配比对

ets:select_delete/2

根据匹配模式删除表里的对象数据

ets:tab2file/2 | ets:tab2file/2

把一个 ETS 表转储到一个文件里

ets:tab2list/1

返回一个 ETS 表的所有对象数据的列表

ets:to_dets/2

把内存里的 ETS 数据插入到磁盘上保存

ets:update_element/3

更新 ETS 表里指定键的对象数据的第几个元素数据

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部