0.6.1"} 十六进制包并在监督树中启动 {:ok, conn} = Redix.start_link() {:ok, conn} = Red-6ren">
gpt4 book ai didi

redis - 如何在 phoenix elixir 聊天应用程序的监督树中运行 Redix 并从不同的模块访问

转载 作者:可可西里 更新时间:2023-11-01 11:04:08 24 4
gpt4 key购买 nike

我想在我的聊天应用程序中使用 {:redix, "~> 0.6.1"} 十六进制包并在监督树中启动

{:ok, conn} = Redix.start_link()
{:ok, conn} = Redix.start_link(host: "example.com", port: 5000)
{:ok, conn} = Redix.start_link("redis://localhost:6379/3", name: :redix)


Redix.command(conn, ["SET", "mykey", "foo"])

但是当我尝试将连接启动链接放置到子进程时它会出错

children = [
# Start the Ecto repository
supervisor(PhoenixChat.Repo, []),
# Start the endpoint when the application starts
supervisor(PhoenixChat.Endpoint, []),
# Start your own worker by calling: PhoenixChat.Worker.start_link(arg1, arg2, arg3)
# worker(PhoenixChat.Worker, [arg1, arg2, arg3]),
supervisor(PhoenixChat.Presence, []),

#supervisor(Phoenix.PubSub.Redis, [:chat_pubsub, host: "127.0.0.1"])
]

如何启动 redix 连接并将数据存储到 Redis?

最佳答案

你要做的是Register进程id。为此,您通常可以在 opts 中指定其名称,如下所示:

worker(Redix, [[], [name: RedixConnection]])

注册进程时,通常您可以使用它的名称而不是 PID(始终检查文档,但这是常见模式),如下所示:

Redix.command(RedixConnection, ["PING"])

大多数时候一个连接是不够的。您可能想使用某种池化机制,例如 poolboydocumentation里面的页面很整齐供您阅读,这称为 Real-world usage。它可能会回答与该主题相关的大部分问题。

还请考虑使用 Erlang/Elixir 内置解决方案来解决您的问题。我不知道你的确切用例,但你可能想查看 ETS、DTS 和 Mnesia。

关于redis - 如何在 phoenix elixir 聊天应用程序的监督树中运行 Redix 并从不同的模块访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45230221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com