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')