我正在构建一个 erlang 服务器。
用户向服务器发送 http 请求以更新其状态。
服务器上的 http 请求过程将用户状态消息保存在内存中。
服务器每分钟将所有消息发送到远程服务器并清除内存。
如果用户在一分钟内多次更新其状态,则最后一条消息会覆盖上一条消息。
重要的是在读取所有消息和清除它们之间没有其他进程将
能够编写状态消息。
实现它的最佳方法是什么?
谢谢
最佳答案
由于您手动进行同步,因此 mnesia 太多了。你显然不需要网络的东西,这就是 ets 和 mnesia 之间的主要区别。
据我所知,Ets 只是一个围绕 dict/bag/... 的 otp 兼容进程,并且由于您有多个进程访问您的数据,因此您应该使用 ets。
我为自己想出了以下逻辑:
Multiple processes on multiple VMs -> mnesia
Multiple processes on one VM -> ets/dets
One process -> bag/dict/...
关于erlang - 带有 dict 的 gen_server vs mnesia 表 vs ets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154376/