【Erlang】二十三、ETS

本文详细介绍了Erlang的ETS(Erlang Term Storage),包括其四种表类型(set、ordered_set、bag、duplicate_bag)、访问权限(private、public、protected)以及基本操作,如创建、插入、查询、删除等。ETS是Erlang中用于高效存储和共享内存数据的机制,对于理解Erlang并发编程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


什么是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).
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值