如何使用Memcached实现Django项目缓存

2023-02-0112:09:47后端程序开发Comments822 views字数 1364阅读模式

1. 安装memcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

这里以Centos下如何安装安装为例,运行如下命令,安装memcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

sudo yum install memcached

测试是否安装成功文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

memcached -help

如果没有报错,就表示安装成功了文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

2. 运行memcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

memcached -d -m 64 -l 127.0.0.1 -p 11211 -u root

-d:表示后台启动守护进程文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

-m: 表示使用多大内存,这里使用64M文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

-l:是监听的服务器IP地址,这里我们填本地,如果想让其他机器访问,写成0.0.0.0文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

-p:是端口号, 默认是11211文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

-u:指定用哪个用户来运行,这里指定root文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

查看memcached是否运行成功,使用如下命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

ps -ef|grep memcached

如果显示如下图,表示启动成功文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

如何使用Memcached实现Django项目缓存

可以使用如下命令关掉memcached进程文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

killall -9 memcached

3. 连接Memcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

使用telnet去连接,先安装telnet,如下命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

sudo yum install telnet

安装完成后,使用下面的命令连接memcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

telnet 127.0.0.1 11211

出现如下界面,表示连接成功,运行quit退出连接文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

如何使用Memcached实现Django项目缓存

至此,我们成功安装了memcached,并能成功运行,下面介绍Django项目如何去使用它文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

4. 安装python-mamcached文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

在自己的项目python环境下安装,如果是虚拟化经,要先运行虚拟环境再安装,命令如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

pip install python-memcached

5. 配置Django项目

在我们项目的setting.py文件里面,加入CACHE选项,如下文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

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

然后根据自己项目的实际情况,设置需要的缓存时间,我的个人Blog缓存时间设置为一天,即60*60*24秒文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

CACHE_MIDDLEWARE_SECONDS=60*60*24

最后,我们在中间件MIDDLEWARE添加memcached所需Django中间件,由于我选择的是缓存全站,所以需要的东西如下:注意中间件的位置和顺序文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

'django.middleware.cache.UpdateCacheMiddleware',# 放到中间件第一个位置
 ...... # 其他中间件
'django.middleware.cache.FetchFromCacheMiddleware',#放在中间件的最后位置

以上就是我们的全部配置和安装,重启nginx和uwsgi之后你就可以打开网站测速了,第一次打开的时候可能会比较慢,因为此时刚刚把你请求的东西放到缓存中,当你再次打开,或者说在你刚刚设定的缓存时间内打开,都是秒开的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

6. 注意事项文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

因为我们设置了24小时缓存,所以在缓存期间内,如果你写了一篇博客文章,你的网站不会立马显示出来,等到缓存时间过期,才会更新出来,如果你想立马显示出来,需要手动去清理下缓存,是缓存过期,网站就会重新丛数据库获取数据,手动是缓存过期,使用如下命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html

# 先连接memcached
telnet 127.0.0.1 11211

#清除缓存
flush_all
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30655.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/30655.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定