0

我已经在 Azure VM 服务器 (Ubuntu) 上安装了 Memcached。我现在需要从我在其他地方运行的 Python 程序连接到它。

当它们安装在同一台服务器上时,这有效:

import memcache
MEMCACHE_SOCKET_PATH = 'unix:<path_to>/memcached.sock'  
memcache_client = memcache.Client([MEMCACHE_SOCKET_PATH], debug=0)

现在我不确定 MEMCACHE_SOCKET_PATH 使用什么。运行 Memcached 的 VM 有一个静态 IP 地址,我创建了一个到 11211 的端点(打开了一个端口)。memcached.sock 位于主目录中。

这就是我在 VM 上运行 Memcached 的方式:

memcached -d -m 500 -s $HOME/memcached.sock -P $HOME/memcached.pid
4

1 回答 1

1

根据您对在 Azure VM 上运行 memcached 的命令的描述,我看到您的 memcached 使用 Unix 域套接字而不是 TCP/IP 运行。Unix域套接字是一种IPC(进程间通信)数据通信解决方案,用于在同一主机操作系统上执行的进程之间交换数据,它不能用于RPC(远程过程调用)场景。

因此,要修复它,您只需使用启动 memcachedmemcached.conf并使其在 TCP/IP 上工作。如果您使用该命令sudo apt-get install memcached安装 memcached,则该memcached.conf文件应位于路径/etc/memcached.conf. 然后您可以通过设置端口和监听 ipsudo vim /etc/memcached.cond的值来更改它,如下所示。-p-l

-p 11211
-l 0.0.0.0

当您在选项卡中添加了 VM NSG 网络接口的入站规则后Networking,您可以通过 tcp 地址连接 Python 中的 memcached 服务<your vm host ip>:<port like 11211>

于 2019-04-03T06:48:41.160 回答