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 关闭保护模式

    未完待续……

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/tantanjishu/p/11697396.html
Copyright © 2011-2022 走看看