【问题标题】:How can I make Webmachine and eredis work together?如何让 Webmachine 和 eredis 一起工作?
【发布时间】:2012-10-25 23:38:39
【问题描述】:

一周以来,我一直在思考我的 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 变量?

【问题讨论】:

    标签: erlang redis mochiweb webmachine


    【解决方案1】:

    有几种解决方案:

    • 在本地或全局注册一个 redis 连接
    • 使用像gproc这样的进程寄存器
    • 将连接的 pid 保留在 webmachine 资源上下文中
    • 使用poolerpoolboy 之类的连接池
    • 如果您不想在池中排队请求dispcount 可能适合

    编辑:被误解的问题,下面的第一个答案:

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

    {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)。钢筋的替代品是sinan,在this article 中有描述。

    【讨论】:

    • 其实,你最初的答案是我一直在寻找的。谢谢你。它让我可以用谷歌搜索 eredis_pool (Eredis + Poolboy) 库。
    猜你喜欢
    • 2015-10-01
    • 2017-06-11
    • 2014-01-12
    • 2020-11-03
    • 2011-03-08
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多