杰瑞科技汇

Python如何安装Memcache?

  1. 安装 Memcached 服务器:在你的系统上运行一个 Memcached 服务。
  2. 安装 Python 客户端库:在你的 Python 环境中安装一个库,用于与上述服务进行通信。

下面我将为你详细讲解这两个步骤,并提供代码示例。

Python如何安装Memcache?-图1
(图片来源网络,侵删)

第 1 步:安装 Memcached 服务器

这一步不是安装 Python 包,而是在你的操作系统(如 Linux, macOS, Windows)上安装并启动 Memcached 服务。

在 Linux (以 Ubuntu/Debian 为例)

  1. 更新包列表:

    sudo apt update
  2. 安装 Memcached:

    sudo apt install memcached
  3. 安装并启动后,可以检查其状态:

    Python如何安装Memcache?-图2
    (图片来源网络,侵删)
    sudo systemctl status memcached

    你应该看到 active (running) 的字样。

  4. 可选:配置监听地址 默认情况下,Memcached 只监听本地回环地址 0.0.1,如果你需要从其他服务器访问,需要修改配置文件。 打开配置文件:

    sudo nano /etc/memcached.conf

    找到 -l 127.0.0.1 这一行,将其修改为 -l 0.0.0.0 以监听所有网络接口,或者修改为特定的服务器 IP 地址。 修改后保存文件,并重启 Memcached 服务:

    sudo systemctl restart memcached

在 macOS (使用 Homebrew)

  1. 如果你还没有安装 Homebrew,请先安装它。

  2. 使用 Homebrew 安装 Memcached:

    brew install memcached
  3. 启动 Memcached 服务:

    brew services start memcached

    你可以使用 brew services list 来查看服务状态。

在 Windows

在 Windows 上安装 Memcached 稍微复杂一些,通常有两种方式:

  1. 预编译二进制文件: 从第三方网站下载预编译的 .zip.exe 文件(从 Memcached for Windows 等站点),下载后解压,然后手动运行 memcached.exe

    # 进入解压目录
    cd C:\path\to\memcached
    # 以服务方式运行(推荐)
    # 需要管理员权限
    memcached.exe -d install
    memcached.exe -d start
    # 或者直接运行(不推荐,关闭命令行窗口服务会停止)
    # memcached.exe
  2. 使用 WSL (Windows Subsystem for Linux): 这是在 Windows 上使用 Linux 工具(包括 Memcached)的推荐方式,你可以像在 Ubuntu 上一样通过 apt 安装。


第 2 步:安装 Python 客户端库

最常用和最推荐的 Python 客户端库是 pymemcache,它设计良好,功能全面,并且支持 Python 2 和 3。

安装 pymemcache

打开你的终端或命令行,使用 pip 进行安装:

# 推荐使用 pip 安装
pip install pymemcache

如果你使用的是 Python 3,并且系统中有多个 Python 版本,建议使用 pip3

pip3 install pymemcache

其他备选客户端库

  • python-memcached: 一个老牌的库,也很流行,但 pymemcache 通常被认为是更现代的选择。
    pip install python-memcached

第 3 步:Python 代码示例

安装完成后,你就可以在 Python 代码中连接并使用 Memcached 了。

使用 pymemcache 示例

pymemcache 提供了一个简单的客户端接口。

from pymemcache.client.base import Client
# 1. 创建一个客户端,连接到 Memcached 服务器
# 默认地址是 ('127.0.0.1', 11211)
client = Client(('localhost', 11211))
# 2. 设置键值对 (set)
# key: 'key1', value: 'value1', 过期时间为 10 秒
client.set('key1', 'value1', expire=10)
print("设置键 'key1' 成功")
# 3. 获取值 (get)
value = client.get('key1')
if value:
    # get 方法返回的是字节串,需要解码
    print(f"获取键 'key1' 的值: {value.decode('utf-8')}")
else:
    print("键 'key1' 不存在或已过期")
# 4. 删除键 (delete)
client.delete('key1')
print("删除键 'key1' 成功")
# 5. 再次获取,验证是否已删除
value = client.get('key1')
if value:
    print(f"获取键 'key1' 的值: {value.decode('utf-8')}")
else:
    print("键 'key1' 已被删除,获取结果为 None")
# 6. 关闭连接 (可选,客户端会自动处理)
# client.close()

运行结果

当你运行上面的代码时,输出会是这样:

设置键 'key1' 成功
获取键 'key1' 的值: value1
删除键 'key1' 成功
键 'key1' 已被删除,获取结果为 None

如果你在 10 秒内没有删除 key1,再次运行程序时,第二次获取 key1 的结果也会是 None,因为它已经过期了。


常见问题与解决方案 (FAQ)

Q1: ConnectionRefusedError: [Errno 111] Connection refused

  • 原因:你的 Python 脚本无法连接到 Memcached 服务器,这通常意味着服务器没有运行,或者连接地址/端口不正确。
  • 解决方案
    1. 确认 Memcached 服务正在运行
      • Linux: sudo systemctl status memcached
      • macOS: brew services list
      • Windows: 检查任务管理器或服务列表中是否有 Memcached 进程。
    2. 检查连接参数:确保代码中的地址和端口与服务器配置的一致,默认是 ('localhost', 11211)('127.0.0.1', 11211)

Q2: ModuleNotFoundError: No module named 'pymemcache'

  • 原因:Python 环境中没有安装 pymemcache 库。
  • 解决方案
    1. 确认你使用的 pip 是否对应正确的 Python 环境,可以尝试 python -m pip install pymemcachepython3 -m pip install pymemcache
    2. 如果你使用的是虚拟环境,请确保已经激活了该环境。

Q3: 如何在 Django 或 Flask 中使用 Memcached?

  • Django: Django 的缓存框架内置了对 Memcached 的优秀支持,你只需要在 settings.py 中配置即可。

    # settings.py
    CACHES = {
        "default": {
            "BACKEND": "django.core.cache.backends.memcached.PyMemcacheCache",
            "LOCATION": "127.0.0.1:11211",
        }
    }

    然后就可以在视图中使用了:

    from django.core.cache import cache
    def my_view(request):
        # 尝试从缓存获取
        data = cache.get('my_data')
        if data is None:
            # 缓存中没有,从数据库获取
            data = MyModel.objects.all()
            # 存入缓存,过期时间 300 秒
            cache.set('my_data', data, 300)
        return render(request, 'template.html', {'data': data})
  • Flask: 可以使用 Flask-Caching 扩展。

    pip install Flask-Caching

    然后在应用中配置:

    from flask import Flask
    from flask_caching import Cache
    app = Flask(__name__)
    # 配置缓存
    app.config['CACHE_TYPE'] = 'MemcacheCache'
    app.config['CACHE_MEMCACHED_SERVERS'] = ['127.0.0.1:11211']
    cache = Cache(app)
    @app.route('/')
    @cache.cached(timeout=50)  # 缓存此视图 50 秒
    def index():
        return "Hello, World! This is a cached response."
  1. 服务器端:根据你的操作系统安装并启动 Memcached 服务。
  2. 客户端:在 Python 环境中安装 pymemcache 库 (pip install pymemcache)。
  3. 编码:使用 Client 类连接服务器,然后通过 set, get, delete 等方法操作缓存数据。

遵循以上步骤,你就可以成功地在 Python 项目中集成和使用 Memcached 了。

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