如何在 Django 中使用 Memcached?


动态网站提供交互式和自适应网站的事实是它们的计算,包括数据库查询、模板渲染和业务逻辑,以生成网站访问者看到的页面。这在处理开销方面比通常从系统服务器设置访问文件要昂贵得多。对于中到高流量的网站,减少尽可能多的开销至关重要。这就是缓存的用武之地。保存耗时计算的结果以便您不必再次执行它被称为缓存。

缓存机制需要很少的设置。具体来说,您必须告诉它缓存数据应存储在何处,无论是在数据库中、文件系统中还是内存中。这是一个关键的决定,它将影响缓存的性能,因为某些缓存比其他缓存快。缓存通常比文件系统或数据库缓存更快,因为它避免了访问文件系统或数据库的开销。

什么是 Memcached?

Memcached 是一种基于内存的缓存技术,最初由 Live Journal 创建用于管理大型负载,然后由 Danga Interactive 开源。Slashdot 和维基百科等网站利用它来大幅提高网站性能,减少数据库访问。您可以在 http://danga.com/memcached/ 免费获取 Memcached。它作为守护进程运行,并获得一定量的内存。其主要功能是提供用户界面,用于向缓存添加、检索和删除数据。由于所有数据都保存在内存中,因此没有数据库或存储开销。

安装 Memcached 后,您需要安装 Memcached 的 Python 绑定,这些绑定未包含在 Django 中。这些绑定包含在 memcache.py Python 模块中,可以在以下链接找到 http://www.tummy.com/Community/software/python-memcached/

如何在 Django 中设置 Memcached?

要设置缓存首选项,可以更改 settings.py 文件中 CACHE_BACKEND 设置中的数据。如果开发人员选择使用缓存并且未指定 CACHE_BACKEND,则默认情况下 Django 将使用 :/// 符号。

可以通过将 CACHE_BACKEND 设置为 memcached://ip:port/ 来在 Django 中使用 Memcached。这里 ip 是 Memcached 守护进程的 IP 地址,port 是 Memcached 正在运行的端口。

Django 项目的本地主机在 127.0.0.1 上运行。在以下示例中,memcached 在同一 IP 地址上运行,端口为 1109

CACHE_BACKEND = 'memcached://127.0.0.1:1109/'

CACHES = {
   'default': {
      'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
      'LOCATION': '127.0.0.1:1109',
   }
}

Memcached 的优势

Memcached 的主要优势在于,它可以在多台服务器上运行缓存。这意味着 memcached 守护进程在多台机器上运行,并且所有在多台机器上运行的程序都将假定它们正在使用单个缓存。

这消除了为每台机器复制缓存值的需要。此功能可以按以下方式使用。

CACHE_BACKEND = 'memcached://172.15.25.212:1108;172.16.24.209:1109/'

CACHES = {
   'default': {
      'BACKEND': 'django.core.cache.backends.memcached.PyMemcacheCache',
      'LOCATION': [
         '172.15.25.212:1108',
         172.16.24.209:1109
   }
}

Memcached 的缺点

基于内存的缓存的主要缺点是它是临时的。如果服务器崩溃,其中存储的所有数据都将消失。因此,任何和所有基于缓存的存储都是临时的,不应成为您唯一的存储解决方案。

更新于:2022-09-05

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.