如何让Webmachine和eredis一起工作?

时间:2012-10-15 12:13:25

标签: erlang redis mochiweb webmachine

我一直在思考我的Webmachine应用程序中Redis的使用问题一周。我还没有开悟。

我将使用Eredis,这是一个使用示例:

{ok, Con} = eredis:start_link().

{ok, <<"OK">>} = eredis:q(Con, ["SET", "foo", "bar"]).
{ok, <<"bar">>} = eredis:q(Con, ["GET", "foo"]).

据我所知eredis:start_link()应该只在某处调用一次。但是,我怎样才能在我的资源中获得Con变量?

1 个答案:

答案 0 :(得分:5)

有几种解决方案:

  • 在本地或全球注册redis连接
  • 使用gproc
  • 等流程注册
  • 在webmachine资源上下文中保留连接的pid
  • 使用poolerpoolboy
  • 等连接池
  • 如果您不想在池中dispcount排队请求

编辑:被误解的问题,首先回答如下:

Webmachine和eredis都是Erlang applications following the OTP principles。如果您的应用程序符合OTP,则可以将eredis添加到applications文件中的.app,如下所示:

{application, awesome_app, [
    {description, "My awesome app."},
    {vsn, "0.0.1"},
    {modules, []},
    {registered, []},
    {applications, [kernel, stdlib, 
                    eredis, 
                    webmachine]}
]}.

符合OTP标准的应用程序使用releases。创建发布并启动应用程序后,applications中的应用程序将在您的应用程序之前启动。

Rebar是您构建和生成版本的朋友(more info here)。螺纹钢的替代品是sinanthis article中对此进行了描述。