Django 缓存入门教程

来源:互联网 发布:re管理器怎样改mac 编辑:程序博客网 时间:2024/05/22 04:02

Django 缓存入门教程

说明:本教程开发环境为CenOS 6 + Python2.7 + Django1.12,假设您已经成功安装Django环境。

关于redis

REmote DIctionary Server(Redis) 是一个key-value存储系统,它既可基于内存亦可持久化。

安装redis

yum install redis

测试redis安装是否成功

service redis start
redis-cli
如果成功进入命令行,说明redis server安装成功。redis的默认端口是6379

安装django-redis

pip install django-redis

django中如何使用redis

  • 在settings中启用redis
# use redis# https://niwinz.github.io/django-redis/latest/# http://django-redis-chs.readthedocs.io/zh_CN/latest/CACHES = {    "default": {        "BACKEND": "django_redis.cache.RedisCache",        "LOCATION": "redis://127.0.0.1:6379/1",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",        }    }}
  • 在views中使用缓存
from django.shortcuts import render,HttpResponse, redirectimport datetimefrom django.core.cache import cachedef test_cache(request):    second = datetime.datetime.now().second    key = 'titles'    titles_cached = cache.get(key)    if not titles_cached:        titles = [(second, 'Gavin'), (second, 'Michael'), (second, 'Jack')]        cache.set(key, titles)    else:        titles = titles_cached    context = {'second': second, 'titles': titles, 'cached': titles_cached}    return render(request, 'cache.html', context)
  • 在模板页面使用缓存
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>{% load cache %}{% cache 5 titles_cache %}  <!-- 5 代表缓存时间,titles_cache是缓存名称-->    <h1>这里应用了缓存技术:{{ second }}</h1>{% endcache %}    <h1>这里没有用缓存{{ second }}</h1><h1>现在有title缓存吗?{{ cached }}</h1><ul>    {% for title in titles %}        <li>{{ title.0}},{{ title.1 }}</li>    {% endfor %}</ul></body></html>

常见错误:
wrong number of arguments for ‘set’ command
这是由于redis版本太低引起的,redis2.6以前的版本不支持set命令。
查看redis版本号:redis-server --version

重新安装redis:
yum remove redis
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
tar -zxvf redis-3.2.9.tar.gz
cd redis-3.2.9
make
cd src
make install PREFIX=/usr/local/redis
cd ..
mkdir /usr/local/redis/etc/
mv redis.conf /usr/local/redis/etc/

启动redis:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf

默认redis不是在后台运行的,/usr/local/redis/etc/redis.conf中的daemonize的值修改为yes,重新启动,redis-server即可把redis放在后台运行。

 关于memcache

memcache是一个高性能的分布式的内存对象缓存系统,memcache通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据。memcache主要用于分担数据库的压力。

安装memcached

yum install memcached
详细参考:https://github.com/memcached/memcached/wiki/Install

源码安装:

yum install libevent-develwget http://memcached.org/latesttar -zxvf latestcd memcached-1.4.37/./configure --prefix=/usr/local/memcached make && make test && sudo make install

注意:安装后,由于我们指定的安装目录是/usr/local/memcached,所以直接使用memcached命令是不行的,需要/usr/local/memcached/bin/memcached才行。
参考资料:https://github.com/memcached/memcached/wiki/Install#from-source

查看memcached帮助命令

/usr/local/memcached/bin/memcached -h

启动memcached服务

例如:/usr/local/memcached/bin/memcached -u root -p11211 -m 64
这句命令的意思是以root用户启动memcached,最大缓存设置为64M。

如何使用Python操作memcache

pip install pymemcache

from pymemcache.client.base import Client  client = Client(('localhost', 11211))  client.set('some_key', 'some_value')  result = client.get('some_key')  

详细可参考:https://pymemcache.readthedocs.io/en/latest/getting_started.html

memcached可视化工具的使用

treeNMS是一个基于Java的memcached可视化工具。我们可以使用它来查看memcached。
假设,我们把treeNMS安装在Windows系统上,要通过它来访问远程Linux主机上的memcached,则需要在Linux上执行下属命令:
/usr/local/memcached/bin/memcached -l 0.0.0.0 -u root -p11211 -m 64
注意,这里的-l 0.0.0.0代表允许所有主机的访问,当然11211端口必须能被你的windows访问到。

memcached远程访问

原创粉丝点击