Django 缓存入门教程

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, redirect
import datetime
from django.core.cache import cache

def 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-devel
wget http://memcached.org/latest
tar -zxvf latest
cd 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远程访问

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值