`

[笔记]erlang ets笔记

 
阅读更多

额 电子书是买了 然后再买了本erlang程序设计 

再看ets和dets那部分 就权当做个笔记啦....

 

erlang程序设计 写道
ETS和DETS基本上是在做同一件事:它们提供大型的“键—值”搜索表。所不同的是,ETS驻留在内存,而DETS驻留在磁盘。

 

表的类型有四个 分别是:set、ordered set、bag和duplicate bag

set系列两个 set是保证主键唯一 ordered set会根据主键排序(set就是插入顺序啦) 这里需要注意的是 insert操作如果遇到主键重复了 并不会报错 而是覆盖

bag系列 bag是主键可以重复但是元组要不同 duplicate bag就是可以多个重复的元组了。

 

基本操作1:

-module(ets_test).
-export([start/0]).

start() ->
 lists:foreach(fun create/1,[set,ordered_set,bag,duplicate_bag])
.

create(Mode) ->
  TableId=ets:new(test,[Mode]),
  ets:insert(TableId, {a,1}),
  ets:insert(TableId, {b,2}),
  ets:insert(TableId, {a,1}),
  ets:insert(TableId, {a,3}),
  List = ets:tab2list(TableId),
  io:format("~-13w  => ~p~n" , [Mode, List]),
  ets:delete(TableId).

 

结果如下:
70> c(ets_test).
{ok,ets_test}
71> ets_test:start().
set            => [{b,2},{a,3}]
ordered_set    => [{a,3},{b,2}]
bag            => [{b,2},{a,1},{a,3}]
duplicate_bag  => [{b,2},{a,1},{a,1},{a,3}]
ok

 set如果主键重复是覆盖很容易就可以看出来。(以上set中{a,1}已经被{a,3}覆盖了)

 

 

创建参数:

erlang程序设计 写道
调用ets:new可以创建ETS表。创建表的这个进程就是表的所有者。表创建之后,它的一系列属性设置不能再更改。如果所有者进程死掉,或者调用ets:delete时,就会自动释放表的内存空间。

ets:new的参数是下面这样的。

@spec ets:new(Name, [Opt]) -> TableId
Name是一个原子,[Opt]是一个选项列表,取值范围如下。

set | ordered_set | bag | duplicate_bag。

private。创建私有表,只有所有者进程可以读写这个表。

public。创建公开表,所有知道这个表标识的进程都可以对这个表进行读写操作。

protected。创建受保护的表,所有知道这个表标识的进程都可以对这个表进行读操作,但只有这个表的所有者进程可以对这个表进行写操作。

named_table。命名表,如果存在这个选项,则可以在后续操作中使用Name来操作表。

{keypos, K}。使用K作为键的位置,通常情况下使用的是第一个位置。可能只有一种情况才需要用到这个选项,那就是当我们需要存储Erlang的记录时(记录实际上是变相的元组),它的第一元素包含的是这个记录的名字(对每个记录来说,它的值都是一样的)。

说明 打开一个ETS表时不带任何选项,等同于使用了这样的默认选项[set,protected, {keypos,1}]。

 

书上的内容也就这么多了 关于如何查找 利用匹配删除什么的都没讲 有空做个示例吧 先写到这了。

 

分享到:
评论

相关推荐

    A Study of Erlang ETS Table

    ### Erlang ETS表的研究 #### 摘要与研究背景 本文研究了在Erlang环境下使用一种相对较新的数据结构——Judy数组来实现内存数据库(Erlang ETS)的可能性。研究通过对比基于四种不同数据结构的ETS表性能来进行:...

    erlang_gproc_扩展实现Erlang的全局ets

    在Erlang中,ETS(Erlang Term Storage)是内置的一种高效、内存中的数据库,用于存储和检索Erlang术语。然而,ETS的一个限制是它不支持全局的、跨进程的数据访问。为了解决这个问题,`gproc`库应运而生。 `gproc`...

    读书笔记:ErlangOTP设计原则中文文档.zip

    读书笔记:ErlangOTP设计原则中文文档

    erlang 笔记

    ### Erlang程序设计知识点概述 #### 1. Erlang基础语法与函数定义 - **模块定义**: 在Erlang中,所有的代码都包含在模块之中。例如:`-module(tut).` 定义了一个名为`tut`的模块。 - **函数定义与导出**: 函数定义...

    ets_ui:Erlang术语存储用户界面

    或者自己创建 ETS 表并在 ui 上玩耍动机在一个地方聚合来自多个 erlang 节点的结果。 基于 HTTP 的 ETS 查询能力。 TODO: 客户端模式/集群模式 * 集群模式在它的子客户端模式机器上运行查询安装 make shellAPI 参考...

    erlang 学习笔记1

    【标题】"Erlang 学习笔记1" 在深入探讨Erlang这一强大的并发编程语言之前,我们先来理解一下Erlang的基本概念。Erlang是由瑞典电信设备制造商Ericsson开发的一种函数式编程语言,它最初设计的目的是为了处理分布式...

    <27>erlang record

    2. ETS表操作:使用Erlang的`ets:new/2`函数创建ETS表,`ets:insert/2`插入Record实例,`ets:lookup/2`或`ets:match_object/2`查询记录,`ets:update_element/3`更新Record字段,`ets:delete/1`删除表或`ets:delete_...

    Erlang6大数据存储方式总结

    在Erlang中,处理大数据存储有多种方式,其中包括ETS(Erlang Term Storage)、DETS(Distributed Erlang Term Storage)、Mnesia以及MySQL等。下面将对这些存储方式进行详细解析。 1. ETS(Erlang Term Storage) ...

    Erlang-game-server开发实践.pdf

    * 数据库层:使用Erlang的ETS、Mnesia、MySQL、MongoDB等数据库来存储游戏数据。 游戏服务器实现 在实现游戏服务器时,我们需要考虑以下几个方面: * 玩家和NPC的进程模型:使用Erlang的轻量级进程来模拟玩家和...

    erlang编程 Introducing Erlang

    **Erlang编程:Introducing Erlang** Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,...

    erlang深度分析.pdf

    这涉及到监控ERTS的运行时参数,例如ETS(Erlang Term Storage)使用的内存、进程的数量和状态,以及SMP(对称多处理)支持程度等。 #### 3. 编码最佳实践 在Erlang开发中,最佳实践包括使用模式匹配、递归、消息...

    erlang学习笔记

    ### Erlang学习笔记:深入解析Erlang编程与系统管理 #### 1. Erlang编程基础与资源 在深入探讨Erlang编程之前,我们首先需要了解一些基础资源和学习资料。Erlang官方网站([www.erlang.org](http://www.erlang.org...

    erlang25.0 windows版本

    Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由Ericsson公司开发,主要用于构建高可用性、容错性和可扩展性的软实时系统。Erlang的25.0版本是该语言的一个更新,针对Windows操作系统进行了优化...

    Erlang程序设计(第2版)1

    ETS(Erlang Term Storage)和DETS(Distributed Erlang Term Storage)是Erlang中的两个内置数据库系统,用于存储和检索Erlang术语。ETS是内存中的数据库,适用于高速访问和低延迟需求,而DETS则提供了持久化存储。...

    erlang_版本24.3.4.4

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...

    erlang port driver test

    Port Driver 可能与其他 Erlang 外部接口技术,如 NIF(Native Implemented Function)或 ETS(Erlang Term Storage)进行了对比。 标签 "erlang post driver test" 强调了测试的焦点是关于 Erlang 的 Port Driver...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

    erlang资源

    这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...

    erlang22最新下载包

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...

Global site tag (gtag.js) - Google Analytics