erlang ets表的使用
ETS表的基本:
- ETS 表可以用来高效存储海量的erlang数据,ETS提供大型的键-值查询表,
- ETS是相当高效的:可以用它存储海量的数据(只要有足够的内存).最常用的表操作是插入和查找。
- ETS表的数据保存在内存里,他们是易失的。当ETS表被丢弃或控制它的进程终止时,数据就会被删除.
- 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 表里指定键的对象数据的第几个元素数据