Redis是一个开源(BSD许可)的内存中的数据结构存储系统,可用作数据库、缓存和消息中间件。它支持多种数据结构类型,如字符串、散列、列表、集合、有序集合、位图、HyperLogLogs和地理空间索引。Redis内置了复制、Lua脚本、LRU驱动事件、事务和不同级别的磁盘持久化,并通过Redis哨兵和自动分区提供高可用性。
一、Redis使用场景
- 登录会话存储: 在Redis中存储,数据不会丢失。
- 排行榜或计数器: 实时排行或计数可采用Redis实现。
- 消息队列: 如celery使用Redis作为中间人。
- 当前在线人数: 实时数据,不需要存储到数据库。
- 常用数据缓存: 将不经常变化的数据存储到Redis中,如论坛首页等。
- 前100文章或评论缓存: 缓存经常访问的数据。
- 好友关系: 微博的好友关系可使用Redis实现。
- 发布和订阅功能: 适用于聊天软件。
二、安装Redis
yum install -y redis systemctl start redis # 配置Redis vi /etc/redis.conf # 在配置文件中设置监听地址和密码 bind 127.0.0.1 requirepass 123456 # 登录Redis redis-cli -h 127.0.0.1 -p 6379 -a
三、安装django-redis
pip install django-redis
四、Django配置Redis
在Django的settings.py
中配置CACHES:
CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', 'TIMEOUT': 300, 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'PASSWORD': '' } } }
五、Django操作Redis的两种方式
- 使用django.core.cache.cache
from django.core.cache import cache from django.http import HttpResponse def redis_test(request): cache.set("feiutech", "feiutech.com", 20) if cache.get("feiutech"): return HttpResponse(cache.get("feiutech")) else: return HttpResponse('缓存不存在')
- 通过get_redis_connection()
from django_redis import get_redis_connection from django.http import HttpResponse def redis_test(request): conn = get_redis_connection('default') conn.set("feiutech", "feiutech.com") if conn.get("feiutech"): return HttpResponse(conn.get("feiutech")) else: return HttpResponse('缓存不存在')
六、Redis常用命令-Django操作
操作 | 含义 | 结果 |
---|---|---|
cache.set('key', 'value', 20) | 创建键值缓存(超时时间20秒) | True |
cache.get("key") | 获取键值 | 'value' |
cache.ttl('key') | 过期时间(0表示已过期,None表示未设置过期时间) | – |
cache.delete('key') | 删除键值(1:成功,0:失败) | 1 |
暂无评论内容