django之缓存

网址:https://blog.csdn.net/weixin_39726347/article/details/88035356

   https://www.jianshu.com/p/e0cc03f385ec

   https://www.cnblogs.com/chichung/p/9993317.html

    https://www.cnblogs.com/zhangxiaomeng1991/p/8257747.html

一.缓存全站配置

1.在settings中的MIDDLEWARE中添加django.middleware.cache.UpdateCacheMiddleware’和’django.middleware.cache.FetchFromCacheMiddleware’

(注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。),如下:

MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',   #缓存全站之开始缓存 注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。
    'shucaiyidate.localuser.middleware.simple_middleware',  #自定义中间键获取IP内容
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',#缓存全站之结束缓存 注意: update中间件必须放在列表的开始位置,而fectch中间件,必须放在最后。 这是Django使用中间件的规则,它们是有顺序关系的。
]

2.配置缓存设置,在settings中的配置如下:

CACHE_MIDDLEWARE_SECONDS = 300            #每个page需要被缓存多少秒.,超时时间设定为300秒
CACHE_MIDDLEWARE_ALIAS = "quanzhanhuancun"               #用于存储的缓存的别名
CACHE_MIDDLEWARE_SECONDS = 300 #每个page需要被缓存多少秒.,超时时间设定为300秒
CACHE_MIDDLEWARE_KEY_PREFIX= #密钥前缀


二、基于本地(服务器)内存的缓存,缓存保存在服务器的内存中,在settings中的配置如下:
#基于本地(服务器)内存的缓存,缓存保存在服务器的内存中
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake',
        'TIMEOUT': 600,
        'OPTIONS': {
            'MAX_ENTRIES': 2000
        }
    }
}

三、基于文件的缓存,在settings中的配置如下:

#将数据缓存在指定的目录中
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        # 'LOCATION': '/var/tmp/django_cache',    #linux路径
        'LOCATION': 'E:djangocache',   #windows路径
        'TIMEOUT': 600,
        'OPTIONS': {
            'MAX_ENTRIES': 1000
        }
    }
}

 四、利用数据库来缓存:

  1.先用 

    python manage.py createcachetable my_cache_table  
  命令创建一个表名为"my_cache_table"的表来缓存数据
 2.在settings中的配置如下:
  
#利用数据库来缓存
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'my_cache_table',   #利用 python manage.py createcachetable my_cache_table 创建的“my_cache_table”表
        'TIMEOUT': 600,
        'OPTIONS': {
            'MAX_ENTRIES': 2000
        }
    }
}

五、用Memcache来缓存:

  Memcache简介 :https://www.cnblogs.com/tdalcn/p/6961627.html

  1.安装依赖:

    Ubuntu/Debian系统命令:

      sudo apt-get install libevent ibevent-dev      

    Redhat/Fedora/Centos系统命令:

       yum install libevent libevent-devel 

    安装telnet-server:  yum install telnet-server

             yum list telnet*       #列出telnet相关的安装包

             yum install telnet.*   #安装telnet客户端

    安装xinetdyum -y install xinetd

  2.安装memcached:

    Ubuntu/Debian系统命令:

      sudo apt-get install memcached

    Redhat/Fedora/Centos系统命令:

       yum install memcached

    cat /etc/sysconfig/memcached  #查看配置文件,如下

    

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

    systemctl start memcached  #启动memcached服务

    systemctl enable memcached  #开机启动memcached服务

    telnet 127.0.0.1 11211   :连接成功,表示启动

    netstat -tlunp   :可以看到11211端口,即表示启动

    或 ps -ef | grep memcached   可以看到服务启动的进程

      使用 kill -9 进程id   ,可以杀死进程

    

  3.python中pip 安装“

       pip install python-memcached      #安装python-memcached

       pip install pylibmc  #安装pylibmc

  4.在settings中的配置:

    

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',  #缓存后台使用的引擎#根据你安装的Python依赖库不同,将CACHES的BACKEND设置为django.core.cache.backends.memcached.MemcachedCache或者django.core.cache.backends.memcached.PyLibMCCache
        'LOCATION': '127.0.0.1:11211',   #设置LOCATION为你的Memecached守护进程所在的主机IP和进程端口,格式为ip:port的字符串。或者unix:path的形式,在Unix操作系统中。
        'TIMEOUT': 600,  # 缓存超时时间(默认300秒,None表示永不过期,0表示立即过期)
        'OPTIONS': {
            'MAX_ENTRIES': 2000,   #最大缓存记录的数量(默认300)
            'CULL_FREQUENCY': 3,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
        }
    }
}

   5.linux 系统查看memcached使用情况:http://blog.sina.com.cn/s/blog_7d31bbee010193il.html

    说明memcached重要关注数据:https://www.cnblogs.com/smallrookie/p/5776565.html

   6. memcached官网文档:https://www.runoob.com/memcached/memcached-stats.html

  7. 设置开机启动memcached :  网址:https://www.cnblogs.com/iceman-/p/7875285.html

      在/etc/rc.d/rc.local 文件中追加:

        

      /usr/local/memcached/bin/memcached  -u root -d -m 2048 -l 192.168.137.99 -p 11211 -P /tmp/memcached.pid

        也可不指定IP,默认是本机,如 (用户最好是 apache或 deamon)

      /usr/local/memcached/bin/memcached  -u deamon -d -m 2048 -p 11211 -P /tmp/memcached.pid

        此处追加

          /usr/bin/memcached -u root -d -m 2048 -p 11211 -P /tmp/memcached.pid

 


原文地址:https://www.cnblogs.com/jingzaixin/p/13403333.html