热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis和mongodb区别,memcache和redis选择

对于中大型网站而言,使用缓存减少对数据库的访问次数是提升网站性能的关键手段之一。在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设置及如何使用


推荐阅读
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • 大厂首发!思源笔记docker
    JVMRedisJVM面试内存模型以及分区,需要详细到每个区放什么?GC的两种判定方法GC的三种收集方法:标记清除、标记整理、复制算法的 ... [详细]
  • 开发笔记:Memcached高性能内存对象缓存系统
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • Ubuntu18.04 安装ROS Melodic && Ros2 Dashing
    https:blog.csdn.netqq_44717317articledetails104547474一、Ubuntu18.04的安装ubuntu2go的制作关于Ubuntu2 ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了python面试题——数据库和缓存(46题)相关的知识,希望对你有一定的参考价值。1、列举常见的关系型数据库和非关系型都有那些? ... [详细]
  • 相对于内存来说,磁盘的容量是非常大的,所以Linux内核实现了一个叫 内存交换 的功能--把某些进程的一些暂时用不到的内存页保存到磁盘中,然后把物理内存页分配给更紧急的用户使用,当 ... [详细]
  • 基于内存和 Redis 的两级 Java 缓存框架!
    👇👇关注后回复“进群”,拉你进程序员交流群👇👇Java两级缓存框架,可以让应用支持两级缓 ... [详细]
  • Redis学习笔记(二) .NET中使用Redis
    Redis是一个用的比较广泛的KeyValue的内存数据库,新浪微博、Github、StackOverflow等大型应用中都用其作为缓存,Redis的官网为http:redis.io。最 ... [详细]
author-avatar
周周周大丨小姐想好好在家呆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有