[erlang]ets中bag表类型应用
其它参考:ets和record无逢结合
ets默认创建的为set类型表,既每条记录关健字唯一的表,但很多时候创建一个表有多个相同的关健字,如一个类似sns好友对应表:
uid friendId
-------------
101 201
101 202
101 203
....
初始化一个record,在文件 t.hrl 中:
-record(t, {uid,friendId}).
引入Eshell
>rr("t.hrl").
[t]
这时我们需要一个bag类型的ets表,以uid做主键:
>ets:new(t,[public,bag,named_table,{keypos, #t.uid}]).
t
在uid=101的关键字下新增记录:
>ets:insert(t,#t{uid=101,friendId=201}),
ets:insert(t,#t{uid=101,friendId=202}),
ets:insert(t,#t{uid=101,friendId=203}).
true
查看uid=101的所有记录:
>ets:lookup(t,101).
[#t{uid = 101,friendId = 201},
#t{uid = 101,friendId = 202},
#t{uid = 101,friendId = 203}]
删除friendId=202的记录
>ets:delete_object(t,#t{uid=101,friendId=202}).
true
再次查看是否已经删除
>ets:lookup(t,101).
[#t{uid = 101,friendId = 201},#t{uid = 101,friendId = 203}]
ok,friendId=202的记录已经删除.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论