作者:周周周大丨小姐想好好在家呆 | 来源:互联网 | 2023-07-09 20:50
对于中大型网站而言,使用缓存减少对数据库的访问次数是提升网站性能的关键手段之一。在Django项目生产环境中最常用的缓存后台是Memcached和Redis。本文会对比这两个存储系
对于大中型网站,使用缓存减少数据库访问次数是提高网站性能的重要手段之一。 Django项目生产环境中最常用的缓存回退是Memcached和Redis。 今天,我们将快速了解如何在Django项目中将Memcached和Redis配置为缓存回退。 哪个好呢? 本文将比较这两个存储系统,并在文末提供答案。
Memcache缓存
Memcache是一个高性能的分布式内存对象缓存系统,是Django本机支持的最快、最高效的缓存系统。 Memcached的优点是它是快速、分布式的缓存,可以同时在多个服务上运行(Django将它们视为一个大缓存)。
安装步骤Memcached
windows系统:官网下载,解压缩安装即可。
Linux系统:在Ubuntu系统上,使用sudo apt-getinstalllibeventibevent-dev安装Memcached依赖关系,然后使用sudo apt-get install Memcached
有关安装的详细信息,请参见专用网络教程: https://www.run OOB.com/memcached/memcached-tutorial.html
第二步:启动Memcached
# Linux系统-前端启动/usr/local/memcached/fzdc/memcached-p 11211-m64m-vv # Linux系统-作为后台服务启动/usr/local
Python操作必须在memcached数据库中安装python-memcached或pylibmc。 建议前者。
将pip安装py hon-memcached步骤memcached设置为Django缓存回退
#本地缓存,localhost caches={ ' default ' : { ' back end ' : ' django.core.cache.backends.memcached.memcacad unix soket通信caches={ ' default ' : { ' back end ' : ' django.core.cache.backends.memcached.memcached ched cached ' back end ' : ' django.core.cache.backends.memcached.memcached cache ',' locationds ',' 172.19.26.24233333 ' location ' : [ (172.19.26.24033601211 ',5 )。
Redis是目前速度最快的内存型非关系(NoSQL )型数据库。 Redis不仅支持简单的密钥值类型数据,还提供许多数据结构的存储,包括列表、集、zset和散列。
安装步骤Redis
windows系统:官网下载,解压缩安装即可。 请勾选复选框,输入环境变量。
Linux系统: Ubuntu系统可以使用sudo apt-get install redis-server安装。
启动步骤Redis服务
# Windows系统: cmd进入redis安装目录,redis服务redis-server.exe redis.windows.conf # Linux系统启动: redis安装目录启动redis/redis.conf#并在redis-CLI.exe-h 127.0.0.1-p 6379 # windows系统上打开单独的窗口(可选) 建议像其他服务器一样进行设置以提高安全性
由于redis默认绑定到本机,因此第一步将取消此设置。
#编辑配置文件sudo vim /etc/redis/redis.conf用v
im打开该配置文件后,注释掉下面这行: # fzdcd 127.0.0.1
然后设置登录密码。由于配置文件较长,命令模式下输入/requirepass foobared快速搜索该配置项:
#找到下面这一行并去除注释,未修改之前:#requirepass foobared#修改成:requirepass your_pwd #设置新的密码
修改后使用redis-server restart重启服务器使配置生效。以后从其它服务器访问redis时携带你设置的密码即可:
redis-cli -a your_pwd -h hostip
第三步:pip安装django-redis
Redis安装好并且启动后,你还需要通过pip安装django-redis才能在Django中操作redis数据库。
pip install django-redis
第四步:将Redis设为Django缓存后台
CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://your_host_ip:6379', # redis所在服务器或容器ip地址 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "your_pwd", # 你设置的密码 }, },}
你还可以在settings.py设置缓存默认过期时间(非必须)。
REDIS_TIMEOUT=24*60*60CUBES_REDIS_TIMEOUT=60*30NEVER_REDIS_TIMEOUT=365*24*60*60 测试缓存是否设置成功
在你修改完settings.py中关于缓存的配置后,你一定想知道Django缓存是否设置成功。你可以输入下面命令打开Python的命令交互窗口:
python manage.py shell
然后逐条输入以下命令进行测试。如果无任何报错,说明你缓存设置成功。
from django.core.cache import cache #引入缓存模块cache.set('k1', '555', 60*1) #写入key为k1,值为555的缓存,有效期1分钟cache.has_key('k1')#判断key为k1是否存在cache.get('k1') #获取key为k1的缓存结果
Memcached vs Redis
Memcached和Redis 两者都是基于内存的、键-值数据存储系统,速度都很快,而且支持分布式部署,然而两者的区别也挺大的。
数据结构:与memcached相比,Redis拥有更多的数据结构(如list,set,zset,hash)并且支持丰富的数据操作。
键值尺寸上限:Redis每个键值(value)的存储尺寸上限高达512MB,而Memcached每个键值尺寸最大不超过1MB。
数据持久化:Memcached不支持数据持久化,服务器重启后缓存数据就没了,而Redis不仅支持支持缓存数据在硬盘上的持久化,还支持master-slave模式的数据备份。
从各方面看,Redis功能特性远优于Memcached。如果你的企业要选缓存系统,小编建议直接上redis就够了。
本文节选自大江狗博客Django进阶系列一文,链接如下(点击原文阅读即可跳转)。
https://pythondjango.cn/django/advanced/7-cache/
相关阅读
Django基础(8): 缓存Cache应用场景及工作原理,Cache设置及如何使用