zoukankan      html  css  js  c++  java
  • Django-Redis:在Django中使用redis作为缓存

    Django-Redis

    参考资料:

    https://django-redis-chs.readthedocs.io/zh_CN/latest/

    http://www.redis.cn/documentation.html

    Redis可以干什么?

    记录评论数、热度、浏览量等。(使用hash)

    记录我的收藏、我的文章等列表类型的数据。(使用zset)

    记录某篇文章的点赞人员列表。(使用zset)

    缓存频繁访问但又不太多的东西,例如:热门推荐。(使用hash)

    记录与当前浏览的对象相关的对象,例如:与当前文章相关的文章。(使用list)

    记录分类排行榜。(使用zset)

    缓存历史记录,如:登录历史等。(使用zset或hash)

    Redis的数据结构

    不管什么数据类型,在Redis总是以key,value的形式存在,可以通过key获得value的值,redis数据结构类型的差异取决于value的类型。

    例如:string类型的value是string,set类型的value是set,zset的value的类型是zset,而key都是string。

    =========================================================================================
    string(字符串)       {"key1":"hello Wrold" }  
    set(集合)            {"key2":{'a':null,'b':null}}      set相当于字典,只是所有键对应的值都是null
    zset(有序集合)        有顺序的set      
    hash(字典)          {"key3":{'url1':'http://22'}}     可以用来存储用户信息
    list(列表)           {"key4": [1,2,4,3]                 
    =========================================================================================
    

    string的应用

    常见的用途:缓存用户基本信息。
    将用户的基本信息序列化成JSON字符串,然后将序列化后的字符串保存到 Redis 来缓存。反过来,当取用户
    信息时,会经过一次反序列化。

    list的应用

    通常用作异步队列、存储列表数据。

    hash的应用

    无序字典,字典的值只能是字符串。

    hash的最后一个元素删除后,该数据结构自动被删除。

    hash也可以存储用户的信息,和string不同的是,hash可以对用户信息的每个字段单独存储。

    set集合的应用

    set的最后一个元素删除后,该数据结构自动被删除。

    set中不存在重复元素,利用这个特性,我们可以用来存储防止重复事件发生的情况。例如:在抽奖活动系统中存储中奖用户,防止重复中奖。

    Django-Redis

    Django 支持 Redis cache/session 后端的全功能组件。

    说明

    Django-Redis可以和Django配合使用,充当cache/session

    Django-Redis依赖于pyredis

    功能

    作为session后端

    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    SESSION_CACHE_ALIAS = "default"
    

    作为cache后端

    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/1",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
            }
        }
    }
    

    思考

    为什么使用Django-Redis时,在配置文件里配置一下,就能生效?

    以缓存为例,请对比一下三个类:RedisCache,DatabaseCache,MemcachedCache

    from django_redis.cache import RedisCache
    from django.core.cache.backends.db import DatabaseCache
    from django.core.cache.backends.memcached import MemcachedCache
    

    CentOS安装redis

    tar xzf redis-4.0.2.tar.gz
    cd redis-4.0.2
    make
    make install

    启动服务

    redis-server
    

    关闭连接

    强行终止 Redis 进程可能会导致数据丢失。正确停止Redis的方式应该是向Redis发送SHUTDOWN命令,方法为:

    redis-cli shutdown
    

    配置文件

    常用参数说明

    参数 说明
    daemonize yes 使Redis以守护进程模式运行
    pidfile /var/run/redis_端口号.pid 设置Redis的PID文件位置
    port 端口号 设置Redis监听的端口号
    dir /var/redis/端口号 设置持久化文件存放位置
    protected-mode no 关闭保护模式

    未完待续……

  • 相关阅读:
    fail-fast以及Iterator对象
    LeetCode~1351.统计有序矩阵中的负数
    LeetCode~75.颜色分类
    LeetCode~5364. 按既定顺序创建目标数组
    LeetCode~945.使数组唯一的最小增量
    LeetCode~409. 最长回文串
    笔记: SpringBoot + VUE实现数据字典展示功能
    JSON parse error: Cannot deserialize value of type `java.util.Date` from String
    为什么要用location的hash来传递参数?
    初识Git
  • 原文地址:https://www.cnblogs.com/tantanjishu/p/11697396.html
Copyright © 2011-2022 走看看