Erlang 带有dict与mnesia表与ets的gen_服务器
我正在构建一个erlang服务器。 用户向服务器发送http请求以更新其状态。 服务器上的http请求进程将用户状态消息保存在内存中。 服务器每分钟向远程服务器发送所有消息并清除内存。 如果用户在一分钟内多次更新其状态,则最后一条消息将覆盖前一条消息。 重要的是,在读取所有消息和清除这些消息之间,没有其他进程能够完成 能够编写状态消息 实施它的最佳方式是什么Erlang 带有dict与mnesia表与ets的gen_服务器,erlang,dictionary,gen-server,ets,Erlang,Dictionary,Gen Server,Ets,我正在构建一个erlang服务器。 用户向服务器发送http请求以更新其状态。 服务器上的http请求进程将用户状态消息保存在内存中。 服务器每分钟向远程服务器发送所有消息并清除内存。 如果用户在一分钟内多次更新其状态,则最后一条消息将覆盖前一条消息。 重要的是,在读取所有消息和清除这些消息之间,没有其他进程能够完成 能够编写状态消息 实施它的最佳方式是什么 带有dict的gen_服务器。密钥将是用户ID。dict:store/3将更新或创建状态。gen_服务器解决了“事务”问题 带有ram_副
谢谢因为您是手动同步的,所以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问题邮件列表中进行了讨论。下面是讨论的链接,对于像我这样首先发现stackoverflow的人: