• 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]>
    
  • 相关阅读:
    Layui里的倒计时的使用
    idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
    软件生存周期及其模型是什么?
    试述软件的概念和特点?软件复用的含义?构件包括哪些?
    一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
    在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试。
    给你一个网站,你如何测试?
    使用SpringBoot Actuator 监控应用
    使用SpringBoot 集成 FastDFS
    使用SpringBoot 上传文件
  • 原文地址:https://www.cnblogs.com/Alier/p/9557444.html
Copyright © 2020-2023  润新知