当前位置: 首页 > article >正文

Django-rest-framework(DRF)怎么使用redis

一、redis作用

Redis,作为一款开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是Redis的主要作用:

1、高速缓存

Redis能够极大地加速数据的读取速度,因为它将数据存储在内存中通过缓存热点数据,Redis显著减少了对后端数据库(如MySQL)的查询压力,从而提升了整个系统的响应速度

2、会话存储

在Web应用中,Redis常被用来存储用户会话信息,如登录状态、购物车内容等。这有助于在分布式系统中实现会话共享,确保用户在不同服务器之间切换时能够保持会话的连续性。

3、数据持久化

Redis支持发布/订阅消息模式,允许消息发送者(发布者)将消息发送到特定的频道,而消息接收者(订阅者)可以订阅这些频道以接收消息。这为应用之间的异步通信提供了一种简单而有效的解决方案。

4、发布/订阅系统

Redis支持发布/订阅消息模式,允许消息发送者(发布者)将消息发送到特定的频道,而消息接收者(订阅者)可以订阅这些频道以接收消息。这为应用之间的异步通信提供了一种简单而有效的解决方案。

5、计数器

Redis提供了原子性的递增和递减操作,这使得它成为实现计数器(如网站访问量、点赞数等)的理想选择。

6、排行榜

Redis的有序集合(Sorted Set)数据结构使得实现排行榜变得非常简单。你可以轻松地添加、删除和更新成员,并根据分数对成员进行排序。

7、应用集成

Redis可以与其他应用和服务(如消息队列、搜索引擎等)进行集成,以提供更丰富的功能和服务。

二、安装redis

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django-redis

三、django集成redis

1、配置django缓存的后端

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",  # 配置redis缓存
        "LOCATION": "redis://127.0.0.1:6379/1",  # 使用redis名叫1的数据库
        "OPTIONS": {
            # django使用redis的默认客户端来进行操作.
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

2、缓存查询数据

from django.utils.decorators import method_decorator
from django.views.decorators.cache import cache_page
class AIView(APIView):
    authentication_classes = []
    @method_decorator(cache_page(60*60))  # 使用method_decorator装饰器缓存并设置过期时间
    def get(self,request):
        input_content=request.query_params.get('input')
        try:
            content=load_model(input_content)
            return Response(data={'msg':'请求成功','data':content,'code':200})
        except Exception as e:
            return Response(data={'msg':'请求失败','error':str(e),'code':500})

3、自定义缓存数据

from django.core.cache import cache
class AIView(APIView):
    authentication_classes = []
    def get(self,request):
        input_content=request.query_params.get('input')
        cache.set('input',input_content,timeout=60*60)  # cache.set设置键名,键值,过期时间
        print(cache.get('input')) # cache.get进行取值
        try:
            content=load_model(input_content)
            return Response(data={'msg':'请求成功','data':content,'code':200})
        except Exception as e:
            return Response(data={'msg':'请求失败','error':str(e),'code':500})


http://www.kler.cn/news/342257.html

相关文章:

  • 洗衣店订单管理:Spring Boot系统创新
  • Java | Leetcode Java题解之第472题连接词
  • 基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)
  • 【JAVA开源】基于Vue和SpringBoot的卫生健康系统
  • React modal暴露ref简洁使用
  • 【uniapp小程序】使用cheerio去除字符串中的HTML标签并获取纯文本内容
  • 性能优化-SQL查询优化技巧全解
  • 服装生产管理的数字化转型:SpringBoot框架
  • Serilog文档翻译系列(八) - 记录器的生命周期、可靠性
  • Android -- [SelfView] 自定义多色渐变背景板
  • C/C++语言三大结构练习题(持续更新。。。)
  • 什么是矩阵系统,怎么选择矩阵系统,怎么oem贴牌,怎么源码搭建
  • Oracle RAC IPC Send timeout detected问题分析处理
  • 免费气象可视化的前端框架概述
  • 每日一面 day03
  • 论文翻译 | Fairness-guided Few-shot Prompting for LargeLanguage Models
  • 每天一个数据分析题(四百九十八)- Apriori算法
  • 毕业设计选题:基于php+vue+uniapp的新闻资讯小程序
  • CocosCreator基于jenkins自动构建
  • MQTT vs HTTP:谁更适合物联网?