在不断的接触并熟悉项目代码之后,发现项目中对于临时数据的存储所使用的方式并不是唯一的。 Erlang存储临时数据的方法有多种,个人接触到的有如下三种: 1. 进程字典 2. ETS表 3. 把数据保存到记录中 进程字典是进程的私有数据存储,它是由一系列键值对组成的关联数组,一个键对应一个值,当进程消失时,数据也会随之丢失。 ETS向我们提供了大型的“键-值”搜索表,它实际上就是一系列的Erlang元组,当表释放时,数据也会丢失。 记录把名称与元组中的元素一一对应起来,它在本质上仍旧是元组,记录属于创建它的进程,当进程消失时,记录也会被清空。 进程字典存储在内存之中,速度相当快,但是不可以被其他进程读取,当进程所使用的数据与其他进程没有关联时,可以使用进程字典来存储数据。反之,当进程使用的数据与其他功能进程有联系时,则应该使用ETS表或者记录,ETS表属于创建它的进程,但是它的默认类型为PROTECTED,别的进程虽然不可以修改它,但是可以读取其中的数据,记录可以被任何进程读取,但是有可能影响运行效率。
|