• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Django项目如何配置Memcached和Redis缓存?选择哪个更有优势?

python 搞代码 4年前 (2022-01-08) 36次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了Django项目如何配置Memcached和Redis缓存,帮助大家更好的理解和学习使用django框架,感兴趣的朋友可以了解下

对于中大型网站而言,使用缓存减少对数据库的访问次数是提升网站性能的关键手段之一。在Django项目生产环境中最常用的缓存后台是Memcached和Redis。今天小编就手把手教你如何在Django项目中配置Memcached和Redis作为缓存后台。那么它们两个到底哪个更好呢? 本文会对比这两个存储系统并在文末给出答案。

Memcache缓存

Memcache是一个高性能的分布式内存对象缓存系统,是Django原生支持的最快最有效的缓存系统。Memcached的优点是速度快,属于分布式缓存,支持同时在多台服务器上运行 (Django会把它们当成一个大缓存)。

第一步:安装Memcached

windows系统:官网下载,解压安装即可。

Linux系统:Ubuntu系统需要使用sudo apt-get install libevent ibevent-dev安装Memcached依赖环境,再使用sudo apt-get install memcached安装memcached。

第二步:启动Memcached

 # Linux系统-前台启动 /usr/local/memcached/bin/memcached -p 11211 -m 64m -vv # Linux系统-作为后台服务启动 /usr/local/memcached/bin/memcached -p 11211 -m 64m -d

第三步:pip安装python-memcached

Python操作memcached数据库需要安装python-memcached或pylibmc, 推荐前者。

 pip install pyhon-memcached

第四步:将memcached设为Django缓存后台

 # 本地缓存,使用localhost CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } } # 使用unix soket通信 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'unix:/tmp/memcached.sock', } } # 分布式缓存,多台服务器,支持配置权重。 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ '172.19.26.240:11211', '172.19.26.242:11211', ] # 我们也可以给缓存机器加权重,权重高的承担更多的请求,如下: 'LOCATION': [ ('172.19.26.240:11211',5), ('172.19.26.242:11211',1), ] } }

Redis缓存

Redis 是当今速度最快的内存型非关系型(NoSQL)型数据库。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等多种数据结构的存储。

第一步:安装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-server /etc/redis/redis.conf # 打开redis交互命令行,用于测试(可选) redis-cli.exe -h 127.0.0.1 -p 6379 # windows系统下另打开一个窗口 redis-cli # linux系统

注意:默认情况下,访问Redis服务器是不需要密码的,为了让其他服务器使用同增加安全性我们建议设置Redis服务器的访问密码。

由于redis默认绑定本机的,所以第一步取消该设置:

 #编辑配置文件 sudo vim /etc/redis/redis.conf

用vim打开该配置文件后,注释掉下面这行:

 # bind 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*60 CUBES_REDIS_TIMEOUT=60*30 NEVER_REDIS_TIMEOUT=365*24*60*60

测试缓存是否设置成功

在你修改完settings.py中关于缓存的配置后,你一定想知道Django缓存是否设置成功。你可以输入下面命令打开Python的命令交互窗口:

 python manage.py shell

然后逐条输入以下命令进行测试。如果无任何报错,说明你缓存设置成功。

 from django.core.cache imp<strong style="color:transparent">来源gaodaima#com搞(代@码网</strong>ort 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项目如何配置Memcached和Redis缓存?选择哪个更有优势?的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Django项目如何配置Memcached和Redis缓存?选择哪个更有优势?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址