杰瑞科技汇

memcached安装教程步骤是怎样的?

目录

  1. 什么是 Memcached?
  2. 安装前准备:依赖库 Libevent
  3. 详细安装步骤
  4. 启动、停止和重启 Memcached 服务
  5. 常用启动参数配置
  6. 如何测试 Memcached 是否正常工作?
  7. 常见问题与解答 (FAQ)

什么是 Memcached?

Memcached 是一个高性能、分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态数据库驱动网站的速度,它通常被用于加速动态 Web 应用,以减轻数据库负载。

memcached安装教程步骤是怎样的?-图1
(图片来源网络,侵删)

核心特点:

  • 简单:协议简单,API 丰富。
  • 基于内存:数据存储在内存中,读写速度极快。
  • 多线程:使用 I/O 多线程模型,可以高效处理并发连接。
  • 分布式:可以轻松地横向扩展,将多个 Memcached 服务器组成一个逻辑上的缓存池。
  • Key-Value 存储:简单的键值对存储,数据结构是 hashmap

安装前准备:依赖库 Libevent

Memcached 依赖于 libevent 库,这是一个异步事件通知库,用于处理网络连接。强烈建议先安装它

在大多数 Linux 发行版中,可以通过包管理器轻松安装:

  • CentOS/RHEL:
    sudo yum install libevent-devel -y
  • Ubuntu/Debian:
    sudo apt-get update
    sudo apt-get install libevent-dev -y

详细安装步骤

这里提供几种最常见的安装方式。

memcached安装教程步骤是怎样的?-图2
(图片来源网络,侵删)

在 Linux (CentOS/RHEL) 上安装

使用 yum 包管理器是最简单、最推荐的方式。

# 1. 更新软件包列表
sudo yum update -y
# 2. 安装 Memcached
sudo yum install memcached -y
# 3. 安装开发工具(如果需要从源码编译,则必需,但yum安装不需要)
# sudo yum groupinstall "Development Tools" -y
# 4. 安装依赖库
sudo yum install libevent-devel -y

在 Linux (Ubuntu/Debian) 上安装

使用 apt-get 包管理器。

# 1. 更新软件包列表
sudo apt-get update
# 2. 安装 Memcached
sudo apt-get install memcached -y
# 3. 安装依赖库
sudo apt-get install libevent-dev -y

在 macOS 上安装 (推荐 Homebrew)

如果你使用的是 macOS,Homebrew 是最便捷的包管理工具。

# 1. 如果还没有安装 Homebrew,请先安装它
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2. 使用 Homebrew 安装 Memcached
brew install memcached
# 3. 启动 Memcached 服务(可选,Homebrew 不默认启动)
brew services start memcached

从源码编译安装 (通用方法)

如果你需要安装最新版本的 Memcached,或者你的系统没有预编译的包,可以从源码编译,这种方法适用于所有 Linux/Unix 系统。

memcached安装教程步骤是怎样的?-图3
(图片来源网络,侵删)
# 1. 安装必要的编译工具和依赖
# CentOS/RHEL
sudo yum groupinstall "Development Tools" -y
sudo yum install libevent-devel -y
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential libevent-dev -y
# 2. 下载 Memcached 源码包
# 前往官网获取最新版本号: https://memcached.org/downloads
wget https://www.memcached.org/files/memcached-1.6.21.tar.gz
# tar -xvf memcached-1.6.21.tar.gz
# cd memcached-1.6.21
# 3. 配置、编译和安装
./configure
make
sudo make install
# 默认情况下,`memcached` 命令会被安装到 /usr/local/bin/

启动、停止和重启 Memcached 服务

安装完成后,你需要启动并管理 Memcached 服务。

使用 systemd (现代 Linux 系统,如 CentOS 7+, Ubuntu 16.04+)

# 启动 Memcached 服务
sudo systemctl start memcached
# 停止 Memcached 服务
sudo systemctl stop memcached
# 重启 Memcached 服务
sudo systemctl restart memcached
# 查看 Memcached 服务状态
sudo systemctl status memcached
# 设置开机自启
sudo systemctl enable memcached

使用 service (旧版 Linux 系统)

# 启动
sudo service memcached start
# 停止
sudo service memcached stop
# 重启
sudo service memcached restart
# 查看状态
sudo service memcached status

使用 brew services (macOS)

# 启动
brew services start memcached
# 停止
brew services stop memcached
# 重启
brew services restart memcached

常用启动参数配置

你可以通过修改配置文件 /etc/sysconfig/memcached (CentOS/RHEL) 或 /etc/memcached.conf (Ubuntu/Debian) 来设置启动参数,也可以直接在启动命令后添加参数。

常用参数说明:

参数 说明 示例
-l <ip_addr> 绑定监听的 IP 地址,默认是 0.0.0 (监听所有)。 -l 127.0.0.1 (只允许本地访问)
-p <num> 监听的 TCP 端口号,默认是 11211 -p 11212
-m <num> 分配给 Memcached 的最大内存大小,单位是 MB,默认是 64 -m 512 (分配 512MB 内存)
-c <num> 最大同时连接数,默认是 1024 -c 2048
-d 以守护进程方式运行 (在后台运行)。 -d
-u <username> 运行 Memcached 的用户,默认是 root,但建议使用普通用户如 memcached -u memcached
-P <file> 将进程 PID 写入指定的文件。 -P /var/run/memcached/memcached.pid

示例: 启动一个监听在 0.0.1,端口为 11212,使用 512MB 内存,并以 memcached 用户运行的实例。

memcached -d -m 512 -p 11212 -u memcached -l 127.0.0.1

如何测试 Memcached 是否正常工作?

使用 telnet 命令进行简单测试

telnet 是一个简单的网络工具,可以用来直接与 Memcached 交互。

  1. 确保 telnet 已安装

    • CentOS/RHEL: sudo yum install telnet -y
    • Ubuntu/Debian: sudo apt-get install telnet -y
  2. 连接到 Memcached

    # 如果你的 Memcached 监听在 127.0.0.1:11211
    telnet 127.0.0.1 11211
  3. 执行命令 连接成功后,输入以下命令,每条命令以回车结束。

    • 存储数据 (set key flags exptime bytes) set mykey 0 60 5 (存储一个键为 "mykey",过期时间为60秒,数据长度为5字节) hello (输入数据内容) STORED (表示成功)

    • 获取数据 (get key) get mykey VALUE mykey 0 5 hello (返回的数据内容) END (表示结束)

    • 删除数据 (delete key) delete mykey DELETED (表示成功)

    • 退出Ctrl+] 退出 telnet 提示符,然后输入 quit

使用 Python 和 pymemcache 库进行测试

这是一种更现代、更强大的测试方式。

  1. 安装 pymemcache

    pip install pymemcache
  2. 编写 Python 测试脚本 创建一个名为 test_memcached.py 的文件,并粘贴以下代码:

    from pymemcache.client.base import Client
    # 连接到 Memcached 服务器
    # 如果是远程服务器,请将 '127.0.0.1' 改为对应的 IP 地址
    client = Client(('127.0.0.1', 11211))
    try:
        # 设置一个键值对
        # key: 'python_key', value: b'hello python', 过期时间 60 秒
        result = client.set('python_key', b'hello python', expire=60)
        print(f"Set 'python_key': {'Success' if result else 'Failed'}")
        # 获取这个键值
        value = client.get('python_key')
        if value:
            print(f"Get 'python_key': {value.decode('utf-8')}")
        else:
            print("Get 'python_key': Key not found")
        # 删除这个键
        result = client.delete('python_key')
        print(f"Delete 'python_key': {'Success' if result else 'Failed'}")
        # 再次获取,验证是否已删除
        value = client.get('python_key')
        if value is None:
            print("Get 'python_key' after delete: Key not found, as expected.")
    except Exception as e:
        print(f"An error occurred: {e}")
    finally:
        # 关闭连接
        client.close()
  3. 运行脚本

    python test_memcached.py

    如果一切正常,你将看到类似下面的输出:

    Set 'python_key': Success
    Get 'python_key': hello python
    Delete 'python_key': Success
    Get 'python_key' after delete: Key not found, as expected.

常见问题与解答 (FAQ)

Q1: memcached: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file

原因: 系统找不到 libevent 的共享库文件,通常是因为你编译安装了新版本的 libevent,但它的路径没有被添加到系统的 LD_LIBRARY_PATH 环境变量中。

解决方案:

  1. 找到 libevent 的安装路径

    find /usr -name "libevent-2.1.so.6" 2>/dev/null
    # 或者
    find /usr/local -name "libevent-2.1.so.6" 2>/dev/null

    假设你找到了 /usr/local/lib/libevent-2.1.so.6

  2. 创建软链接 将找到的库文件链接到系统默认的库路径 /usr/lib/

    sudo ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib/libevent-2.1.so.6
  3. 更新库缓存

    sudo ldconfig
  4. 再次运行 memcached

    memcached -V

Q2: memcached: can't open socket

原因: 通常是权限问题。memcached 尝试绑定到一个小于 1024 的端口(如 11211),但非 root 用户没有这个权限,或者你尝试绑定到一个已被占用的 IP 和端口组合。

解决方案:

  1. root 用户运行 (不推荐,有安全风险)

    sudo memcached -d
  2. 推荐:使用普通用户运行,并绑定到 1024 以上的端口

    # 创建一个普通用户
    sudo useradd -r -s /bin/false memcached
    # 以该用户运行,并绑定到 127.0.0.1
    sudo memcached -d -u memcached -l 127.0.0.1
  3. 检查端口是否被占用

    netstat -tuln | grep 11211

    如果有输出,说明端口已被占用,请更改 Memcached 的监听端口 (-p)。

Q3: 如何让 Memcached 开机自启?

使用 systemd (现代系统):

# 启用开机自启
sudo systemctl enable memcached
# 禁用开机自启
sudo systemctl disable memcached

使用 chkconfig (旧版系统):

# 添加到开机自启服务列表
sudo chkconfig memcached on
# 从开机自启服务列表移除
sudo chkconfig memcached off

注意: 通过包管理器(如 yumapt)安装的 memcached 服务通常会自动配置好开机自启,你可以使用 systemctl is-enabled memcached 来检查当前状态。

分享:
扫描分享到社交APP
上一篇
下一篇