第19章 用ETS和DETS存储数据

本文介绍了Erlang中ETS和DETS两种数据存储方式,主要用于存储大量数据并支持键值查询。ETS内存存储,查询速度快;DETS磁盘存储,内存占用小。文章详细阐述了表的类型、基本操作,如创建、插入、查找和删除,并给出了创建ETS表的示例。
摘要由CSDN通过智能技术生成

可以用来搞笑存储海量的Erlang数据,提供大型的键值查询表,ETS常驻内存,DETS则常驻磁盘,ETS表查询速度更快,而DETS运行时占用的内存更小

1.表的类型

  • 保存的是元组,元组里的某一个元素(默认是第一个)被称为该表的键.通过键可以向表里插入和提取元组.分为连个基本的表类型:异键表(set)和同键表(bag);基本表类型有有四种表类型:异键,有序异键,同键,副本同键

2.四种基本操作

  • 1)创建一个新表或打开现有的表: 用ets:new或dets:open_file实现
  • 2)向表里插入一个或多个元组: insert(TableId,X),其中X是一个元组或元组列表
  • 3)在表里查找某个元组: lookup(TableId,Key) ,得到的结果是一个匹配key的元组列表
  • 4)丢弃某个表: dets:close(TableId) 或 ets:delete(TableId).

3.创建一个ETS表

  • 1)ets:new(Name,[Opt]) -> TableId : Name是一个原子,[Opt]是一列选项分为:
    • set|ordered_set|bag|duplicate_bag : 创建一个指定类型的ETS表
    • private 创建一个私有表,只有主管进程才能读取和写入它
    • public 创建一个公共表,任何知道此表标识符的进程都能读取和写入它
    • protected 创建一个受保护表,任何知道此表标识符的进程都能读取它,但只有主管进程才能写入它
    • named_table 如果设置了此选项,Name就可以被用于后续的表操作
    • {keypos,K} 用K作为键的位置,通常键的位置是1。基本上唯一需要使用这个选项的场合是保存Erlang记录(它其实是元组的另一种形式),并且记录的第一个元素包含记录名的时候。
  • 2)建表示例:ets_test.erl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值