• Django分别使用Memcached和Redis作为缓存的配置(Linux环境)


    1 使用memcached

    1.1 安装memcached

    安装(Linux)

    sudo apt install memcached
    

    启动

    #方式一:
    service memcached start
    # 方式二:
    /usr/bin/memcached -u memcache -m 1024 -p 11222 -l 0.0.0.0 -d start
    
    • -d:这个参数是让memcached在后台运行
    • -m:指定占用多少内存。以M为单位,默认为64M。
    • -p:指定占用的端口。默认端口是11211。
    • -l:别的机器可以通过哪个ip地址连接到我这台服务器,如果想要让别的机器连接,就必须设置-l 0.0.0.0

    检测启动成功

    ps aux|grep memcached
    # memcache 11025  0.0  0.1 326560  2372 ?  Ssl  Aug28   0:01 memcached -u memcache -m 512 -p 11211 -l 0.0.0.0 -d
    

    1.2 Django连接memcached

    1.2.1在'setting.py'文件中添加缓存的配置

    # 缓存
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION': [
                '172.19.26.240:11211',
                '172.19.26.242:11211',
            ]
        }
    }
    

    注意:添加的键的命名方式如下

    def default_key_func(key, key_prefix, version):
        return '%s:%s:%s' % (key_prefix, version, key)
    

    如要修改,可在setting.py文件中添加配置'KEY_FUNCTION'

    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION':  '172.19.26.240:11211',
            'KEY_FUNCTION': lambda: key_prefix,version,key : 'Django'+key,
        }
    }
    

    1.2.2 配置好之后在views中操作cache:

    from django.core.cache import cache
    
    def index(request):
        cache.set('username','django',60)
        print(cache.get('username'))
        return HttpResponse('index')
    

    2 使用redis

    2.1 安装redis

    安装(Linux)

    • 将下载的压缩文件解压
    tar zxvf redis-4.0.8.tar.gz
    
    • 复制:推荐放在"/usr/local/"下
    mv -r redis-4.0.8/* /usr/local/redis
    
    • 生成和安装
    cd /usr/local/redis
    make
    make install
    

    启动和配置

    1. 默认方式启动
    redis-server 
    
    1. 运行启动
    redis-server --port 6380  # 指定运行的端口号
    
    1. 配置文件方式启动
    redis-server /etc/redis/redis.conf
    

    客户端连接redis

    1. 交互式方式
    redis-cli -h {host} -p {port}  # 会进入交互式环境
    
    1. 命令方式
    redis-cli -h {host} -p {port} {command}  # 直接执行一个命令,不进入交互式环境
    

    停止redis服务

    # 客户端关闭redis服务器,默认save即关闭时生成持久文件
    redis-cli shutdown nosave|save
    

    2.2 Django配置redis缓存

    开发机上安装django-redis

    pip install django-redis
    

    配置文件'setting.py'

    # 创建键时命名方式
    def KEY_FUNCTION(key, key_prefix, version):
        return "django:" + key
    
    # redis缓存
    CACHES = {
        'default': {
            'BACKEND': 'django_redis.cache.RedisCache',
            # url格式 redis://[:password]@host:port/0
            # 可以在url指定redis的密码,0表示低0个数据库
            'LOCATION': 'redis://127.0.0.1:6379/1',
            'OPTIONS': {
                "CLIENT_CLASS": 'django_redis.client.DefaultClient',
                'PASSWORD': '123456',
            },
            # 自定义键名命名规则
            'KEY_FUNCTION': KEY_FUNCTION,
        }
    }
    

    对view缓存

    # 通过装饰器对views进行缓存
    @cache_page(60 * 2)  # 过期时间为秒
    def cache(request):
        return HttpResponse('cache')
    

    对全站进行缓存,需在setting中设置

    MIDDLEWARE = [
        'django.middleware.cache.UpdateCacheMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.cache.FetchFromCacheMiddleware',
    ]
    

    对模板片段进行缓存

    {% load cache %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    {% cache 120 username %}
        hello, Django
    {% endcache %}
    </body>
    </html>
    

    底层的缓存API

    >>>from django.core.cache import cache
    >>>cache.set('username', 'django', 120)
    >>>True
    >>>cache.get('username')
    >>>'django'
    >>>cache.ttl('username')
    >>>101
    >>>cache.set_many({'a': 1, 'b': 2, 'c': 3})
    >>>cache.get_many(['a', 'b', 'c'])
    >>>OrderedDict([('a', 1), ('b', 2), ('c', 3)])
    

    redis服务器:

    127.0.0.1:6379[1]> keys *
    1) "django:b"
    2) "django:c"
    3) "django:a"
    127.0.0.1:6379[1]>
    
  • 相关阅读:
    Django后台admin的使用
    $(.ajax)的使用
    centos7配置双网卡bond
    vsftpd服务的搭建
    linu重置root密码(CentOS7)
    python内置函数
    元组和字典的魔法
    列表的魔法
    字符串的魔法
    zabbix-get
  • 原文地址:https://www.cnblogs.com/Alier/p/9557444.html
Copyright © 2020-2023  润新知