django-redis缓存记录

对于站点缓存,咱们使用redis这款key-value数据库。Redis有着更为复杂的数据结构而且提供对他们的原子性操做,这是一个不一样于其余数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。Redis运行在内存中可是能够持久化到磁盘,因此在对不一样数据集进行高速读写时须要权衡内存,由于数据量不能大于硬件内存。在内存数据库方面的另外一个优势是,相比在磁盘上相同的复杂的数据结构,在内存中操做起来很是简单,这样Redis能够作不少内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,由于他们并不须要进行随机访问。
它与其余key-value数据库有如下三个特色:html

  • Redis支持数据的持久化,能够将内存中的数据保存在磁盘中,重启的时候能够再次加载进行使用。
  • Redis不单单支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

Redis的优点:python

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操做。
  • 原子 – Redis的全部操做都是原子性的,意思就是要么成功执行要么失败彻底不执行。单个操做是原子性的。多个操做也支持事务,即原子性,经过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过时等等特性。

安装redis程序员

参考连接:redis安装
安装完毕后,启动redis服务便可。可是这样的redis尚未密码来保护,谁均可以进入使用,全部咱们要设置一个密码。redis

# 在redis.conf中找到requirepass这一行,将其设置密码
requirepass xxxxxx

这样之后就能够用密码登陆了:数据库

redis-cli -h 主机ip -p 端口号 -a 密码

可是对于Django的应用,咱们安装django-redis这个扩展库使用,它已经集成了redis的使用在其中,咱们只须要参照其官方文档配置便可。django

安装django-redis缓存

pip install django-redis

配置django-redisbash

MIDDLEWARE = [
    # 全局cache
    'django.middleware.cache.UpdateCacheMiddleware',    <---- add here
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
     # 全局cache
    'django.middleware.cache.FetchFromCacheMiddleware',    <---- add here
]

# redis缓存
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
            'PASSWORD': os.environ['redis_passwd'],    # 隐藏redis的密码,将其设置在操做系统中
        },
    },
}
REDIS_TIMEOUT = 7*24*60*60
CUBES_REDIS_TIMEOUT = 60*60
NEVER_REDIS_TIMEOUT = 365*24*60*60

这样能够作到全局缓存。session

相关文章
相关标签/搜索