【Erlang】二十三、ETS

it2026-08-16  6

文章目录

什么是ETSETS的类型ETS的访问权限ETS操作


什么是ETS

ETS 用于 高效存储 海量 的Erlang数据ETS 常驻内存,只要有足够的内存,就可以无限制的存储ETS 可以被多个进程共享,这就让 跨进程 的公共 数据访问 变得 非常高效ETS 类的数据以键值对的方式存在的

ETS的类型

类型名称解释set异键表要求所有的键都是唯一的ordered_set有序异键表1.要求所有的键都是唯一的 2. 按照Key的名称进行排序bag同键表键可以相同,但是元素不能相同duplicate_bag副本同键表键可以相同,并且元素不能相同

ETS的访问权限

类型解释private私有表,只有主管进程可以读取和写入public公共表,任何知道该表标识符的进程都能读取和写入protected受保护的表,任何知道该表标识符的进程都能读取,但是只有主管进程可以写入

ETS操作

创建表的进程被称为该表的主管 创建表时所设置的选项在创建后是 无法更改 的 如果主管进程挂了,表所占用的空间自动释放

创建ets%% TableName: 表的名字 %% 类型: set | ordered_set | bag | duplicate_bag %% 访问权限:private | public | protected %% K:设置键的位置,通常键的位置是1 %% named_table:如果设置了该项,TableName也可以作为表的表示 TableID = ets:new(TableName, [类型, 访问权限, {keypos, K}, named_table]). 向ets插入数据%% TableID: 表的表示 %% 若该ets设置了 named_table,可以直接通过TableName调用 %% Key:插入数据的键 %% Value:插入数据的值 ets:insert(TableName/TableID, {Key, Value}). ets:insert(TableName/TableID, [{Key1, Value2}, {Key2, Value2}, ...]). 判断ets中是否存在指定的Key%% 返回 true 或 false IsExits = ets:member(TableName/TableID, Key). 查看ets中Key对应的值%% 返回 Table IsExits = ets:lookup(TableName/TableID, Key). 删除ets中指定的Key%% 无论是否包含该Key,都会返回true ets:delete(TableName/TableID, Key). 删除ets中指定的键值对ets:delete_object(TableName/TableID, 键值对元组). 清空ets中所有数据%% 无论是否包含该Key,都会返回true ets:delete_all_objects(TableName/TableID).
最新回复(0)