首页主机资讯Ubuntu Python如何配置缓存系统

Ubuntu Python如何配置缓存系统

时间2025-12-13 00:07:04发布访客分类主机资讯浏览643
导读:Ubuntu 下 Python 缓存系统配置指南 一 方案总览与选型 内存键值缓存:优先选用 Redis(支持持久化、丰富数据结构、可做消息队列)或 Memcached(极简、纯内存、适合高并发读)。 HTTP 层缓存:在 Django/...

Ubuntu 下 Python 缓存系统配置指南

一 方案总览与选型

  • 内存键值缓存:优先选用 Redis(支持持久化、丰富数据结构、可做消息队列)或 Memcached(极简、纯内存、适合高并发读)。
  • HTTP 层缓存:在 Django/Flask/FastAPI 中设置 Cache-Control、ETag 等响应头,结合条件请求(如 If-None-Match)实现客户端/反向代理缓存。
  • CDN 静态资源缓存:将 图片、CSS、JS 等推送到 CDN,降低源站压力、提升全球访问速度。
  • 系统层优化:合理设置 内核参数文件系统缓存,并使用 top/htop/vmstat/iostat 做性能监控与瓶颈定位。

二 安装与启动缓存服务

  • 安装并启动 Redis
    • 安装:sudo apt-get update & & sudo apt-get install redis-server
    • 启动:sudo systemctl start redis-server
    • 验证:redis-cli ping 返回 PONG 表示可用
  • 安装并启动 Memcached
    • 安装:sudo apt-get install memcached
    • 启动:sudo systemctl start memcached
    • 验证:echo stats | nc 127.0.0.1 11211 能看到统计信息
  • 基本配置建议
    • Redis:在 /etc/redis/redis.conf 中设置 maxmemory 1gb 与淘汰策略 maxmemory-policy allkeys-lru(按业务调整)。
    • Memcached:在 /etc/memcached.conf 中设置 -m 1024(单位 MB)与监听 -l 127.0.0.1 -p 11211(按需开放远程)。

三 Python 与 Django 集成示例

  • 通用 Redis 客户端(非 Django)
    • 安装:pip install redis
    • 示例:
      import redis
      r = redis.Redis(host="127.0.0.1", port=6379, db=0, decode_responses=True)
      r.set("k", "v", ex=60)        # 60 秒过期
      print(r.get("k"))
      
  • 通用 Memcached 客户端(非 Django)
    • 安装:pip install python-memcached
    • 示例:
      import memcache
      mc = memcache.Client(["127.0.0.1:11211"], debug=0)
      mc.set("k", "v", time=60)
      print(mc.get("k"))
      
  • Django 使用 Redis 作为缓存
    • 安装:pip install django-redis
    • 配置 settings.py
      CACHES = {
      
          "default": {
      
              "BACKEND": "django_redis.cache.RedisCache",
              "LOCATION": "redis://127.0.0.1:6379/1",
              "OPTIONS": {
      
                  "CLIENT_CLASS": "django_redis.client.DefaultClient",
              }
      
          }
      
      }
          
      # 可选:将 Session 存入缓存
      SESSION_ENGINE = "django.contrib.sessions.backends.cache"
      SESSION_CACHE_ALIAS = "default"
      
    • 使用:
      • 视图缓存:from django.views.decorators.cache import cache_page
        @cache_page(60 * 15)  # 15 分钟
        def my_view(request):
            return HttpResponse("Hello")
        
      • 全站缓存(在 MIDDLEWARE 顶部/底部加入):
        MIDDLEWARE = [
            "django.middleware.cache.UpdateCacheMiddleware",
            # ... 其他中间件 ...
            "django.middleware.cache.FetchFromCacheMiddleware",
        ]
        
      • 低级 API:
        from django.core.cache import cache
        cache.set("my_key", "hello", 30)
        cache.get("my_key")
        
  • Flask 使用 Redis 缓存
    • 安装:pip install Flask-Caching(建议用新包名 Flask-Caching,旧名 Flask-Cache 已不再维护)
    • 示例:
      from flask import Flask
      from flask_caching import Cache
      
      app = Flask(__name__)
      app.config["CACHE_TYPE"] = "RedisCache"
      app.config["CACHE_REDIS_URL"] = "redis://127.0.0.1:6379/1"
      cache = Cache(app)
      
      @app.route("/")
      @cache.cached(timeout=120)  # 2 分钟
      def index():
          return "Hello, cache"
      
    注:若使用旧教程的 Flask-Cache,配置键名可能不同,建议迁移到 Flask-Caching

四 生产环境建议与监控

  • 资源与淘汰策略
    • Redis 设置合理的内存上限(如 maxmemory)与淘汰策略(如 allkeys-lru),避免 OOM;为 Memcached 设置合适的 -m 值并限制监听地址。
  • 连接与高可用
    • 使用连接池、设置超时与重试;Redis 建议启用 AOF/RDB 持久化与必要的 主从/哨兵 或集群方案以提升可用性。
  • 监控与排障
    • 使用 redis-cli infomemcached-tool 或应用性能监控,配合 top/htop/vmstat/iostat 观察 CPU、内存、I/O 与命中率变化,及时调参。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Python如何配置缓存系统
本文地址: https://pptw.com/jishu/771096.html
PHP-FPM在Ubuntu上的资源限制设置 Ubuntu Python如何配置SSL证书

游客 回复需填写必要信息