目录

  1. Memcached 连接方式
  2. 使用 Telnet 连接
  3. 不同编程语言的连接示例
  4. 远程连接 Memcached
  5. 参考资料

1. Memcached 连接方式

Memcached 主要通过 TCP 连接Unix Socket 连接 进行通信,默认端口为 11211,本地连接 IP 地址为 127.0.0.1

连接方式包括:

  • Telnet 连接(手动调试)
  • 编程语言客户端(PHP、Python、Java、Node.js 等)
  • 远程连接(需修改 Memcached 配置)

2. 使用 Telnet 连接

Memcached 运行后,可使用 telnet 进行基本连接测试:

telnet 127.0.0.1 11211

连接成功后,输入 stats 命令获取服务器状态:

stats

返回示例:

STAT pid 12345
STAT uptime 3600
STAT curr_connections 5
...
END

telnet 命令不可用,可使用 nc(Netcat)代替:

echo "stats" | nc 127.0.0.1 11211


3. 不同编程语言的连接示例

3.1 PHP 连接 Memcached

安装 Memcached 扩展(如果未安装):

sudo apt install php-memcached # Ubuntu/Debian
sudo yum install php-pecl-memcached # CentOS/RHEL

PHP 代码示例:

<?php
$memcached = new Memcached();
$memcached->addServer("127.0.0.1", 11211);

// 存储数据
$memcached->set("key", "Hello Memcached!", 60);

// 获取数据
echo $memcached->get("key");
?>


3.2 Python 连接 Memcached

安装 pymemcachepython-memcached 库:

pip install pymemcache

Python 代码示例:

from pymemcache.client import base

client = base.Client(('127.0.0.1', 11211))

# 存储数据
client.set('key', 'Hello Memcached!')

# 获取数据
print(client.get('key').decode('utf-8'))


3.3 Java 连接 Memcached

添加 Spymemcached 依赖(Maven):

<dependency>
    <groupId>net.spy</groupId>
    <artifactId>spymemcached</artifactId>
    <version>2.12.3</version>
</dependency>

Java 代码示例:

import net.spy.memcached.MemcachedClient;
import java.io.IOException;
import java.net.InetSocketAddress;

public class MemcachedTest {
    public static void main(String[] args) throws IOException {
        MemcachedClient client = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));

        // 存储数据
        client.set("key", 3600, "Hello Memcached!");

        // 获取数据
        System.out.println(client.get("key"));

        client.shutdown();
    }
}


3.4 Node.js 连接 Memcached

安装 memcached 依赖:

npm install memcached

Node.js 代码示例:

const Memcached = require('memcached');
const memcached = new Memcached("127.0.0.1:11211");

// 存储数据
memcached.set("key", "Hello Memcached!", 60, function(err) {
    if (err) console.error(err);
});

// 获取数据
memcached.get("key", function(err, data) {
    if (err) console.error(err);
    console.log(data);
});


4. 远程连接 Memcached

默认情况下,Memcached 仅允许本地访问 (127.0.0.1)。若需远程访问,请执行以下步骤:

4.1 修改 Memcached 配置

编辑 /etc/memcached.conf(Ubuntu/Debian)或 /etc/sysconfig/memcached(CentOS/RHEL):

-l 0.0.0.0

或在 CentOS/RHEL 中,修改 /etc/sysconfig/memcached

OPTIONS="-l 0.0.0.0"

然后重启 Memcached:

sudo systemctl restart memcached

4.2 配置防火墙

如果使用 iptables,执行以下命令允许特定 IP 访问 Memcached:

sudo iptables -A INPUT -p tcp --dport 11211 -s 你的IP地址 -j ACCEPT

如果使用 firewalld(CentOS 7+):

sudo firewall-cmd --add-port=11211/tcp --permanent
sudo firewall-cmd --reload


5. 参考资料