• 138.更改session的存储机制


    修改session的存储机制:

    默认情况下,session数据时存储到数据库中,当然也可以将session数据存储到其他地方。可以通过设置SESSION_ENGINE来更改session的存储位置,这个可配置为以下几种方案:

    1.django.contrib.session.backends.db:使用数据库,默认就是这种方案。
    2.django.contrib.sessions.backends.file:使用文件来存储session。
    3.django.contribsessions.backends.cache:使用缓存来存储session。想要将数据存储到缓存中,前提是你必须要在settings.py中已经配置好了CACHES,并且是需要使用Memcached,而不能使用纯内存作为缓存。
    4.django.contribsessions.backends.cached_db:在存储数据的时候,会将数据先存到缓存中,再存到数据库中,这样就可以保证万一缓存系统出现问题,session数据也不会丢失,在获取数据的时候,会向从缓存中获取,如果缓存中没有,那么就会从数据库中获取。需要注意的是,这种情况下要配置memcached缓存和SESSION_ENGINE,示例代码如下:
    # memcached settings
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
            'LOCATION': [
                '127.0.0.1:11211',
                '192.168.1.133:11211',
            ],
            'KEY_FUNCTION': lambda key, key_prefix, version: 'Django:' + key,
        }
    }
    
    # Location of Session_id, Session_data
    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
    
    这种情况下在cmd窗口通过telnet操作memcached,查看是否存储到了缓存中,使用命令:stats items, 返回的结果:
    STAT items:1:number 1  
    
    之后,查看缓存中items:1的具体信息,执行命令:
    stats cachedump 1 0
    
    返回的结果为:
    ITEM age [2 b; 1581842070 s]
    END 
    
    获得age的具体信息,执行命令:get age。
    get age
    VALUE age 16 2
    20
    END 
    
    # 将session信息加密后存储到浏览器的cookie中
    # SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
    
    在这种情况下,只会将session信息加密后存储到浏览器中cookie中,而不会存储到数据库中。
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    001-快速排序(C++实现)
    NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法
    jenkins数据迁移方案
    gitlab仓库迁移方案
    rancher中搭建elk,部分配置文件
    Spring事务传播行为详解
    Linux下安装配置启动RabbitMQ
    Nginx做代理路由时,不转发http的header问题
    @Validated @RequestBody @RequestParam配合使用校验参数
    jenkins环境搭建
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12354667.html
Copyright © 2020-2023  润新知