Django中使用Redis缓存

Posted 灰灰^_^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中使用Redis缓存相关的知识,希望对你有一定的参考价值。

Redis数据库

Redis vs mysql

  • redis: 内存数据库(读写块)、非关系型(操作数据方便)
  • MySQL:硬盘数据库(数据持久化)、关系型(操作数据间关系)
  • 大量访问临时数据,采用redis数据库更优

Redis vs Memcache

  • Redis
    • 操作字符串、列表、哈希、无序集合、有序集合
    • 支持数据持久化,有一部分数据存在硬盘中(数据丢失可以找回、可以将数据同步给mysql)
    • 高并发
  • Memecache
    • 操作字符串
    • 不支持数据持久化
    • 并发量小

Redis操作

  • 基础操作:
    • 启动服务:redis-server
    • 链接数据库:redis-cli
    • 链接指定数据库:redis-cli -h 127.0.0.1 -p 6379 -n 1 (-n表示要连接的库)
    • 切换数据库:select 1
  • 数据操作:
    • 字符串
    • 列表
    • 哈希
    • 无序集合
    • 有序集合(游戏排行榜)

Redis数据库

  • 命令行简单使用redis:
    • redis-cli -- 启动客户端
    • set key value -- 设置值
    • get key -- 取出值
  • 特点:
    • 可持久化
    • 单线程单进程并发

Python使用Redis

1.依赖:

pip install redis

2.直接使用:

import redis
r = redis.Redis(host='127.0.0.1', port=6379, db=1)

3.连接池使用:

import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=10, max_connections=100)
r = redis.Redis(connection_pool=pool)

4.缓存使用:额外安装django-redis:

# 安装django-redis
pip install django-redis

# settings.py
# 将缓存存储位置配置到redis中
ACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
        }
    }
}

# views.py
# 操作cache模块直接操作缓存
from django.core.cache import cache
# 存放token,可以直接设置过期时间
cache.set('token', 'header.payload.signature', 10)
# 取出token
token = cache.get('token')

以上是关于Django中使用Redis缓存的主要内容,如果未能解决你的问题,请参考以下文章

django之缓存的用法, 文件形式与 redis的基本使用

Django中使用Redis缓存

Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化

django指定缓存redis

django-redis-cache 和 django-redis 用于使用 Django 进行 redis 缓存的区别?

django 使用redis进行页面数据缓存和更新缓存数据