自我笔记 - django 系列 [Redis篇]

django、python redis

本篇着重在最基本的连线使用,关於redis型态存取无详细说明
必须先安装redis,并开启服务

使用完以下三个方法,个人还是认为python原生的redis比较好用,纯属个人意见

python 原生

安装python redis套件: pip install redis

import redis # 导入redis模块
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
# redis取出值设置是byte,可用decode_responses=True改成字符串
# 也可以取出後再decode('utf8')

# 测试
r.set('keyName', 'value')
text = r.get('keyName')
print(text) # 显示 'value'

django-redis

官方参考

安装django-redis套件: pip install django-redis

设置连线

  • 於django专案setting.py中设置以下
CACHES = {
    "default": {
        # 预设使用
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1", # 指定redis://IP/第几个DB
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        },
        'KEY_PREFIX': 'Cache'
    },
    # 其他redis库
    "testRedis": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/2",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        },
        'KEY_PREFIX': 'Cache'
    },
}

使用方法1 (cache)

★必须注意以下★

预设取 default 资料库

(此种方法会增加预设前缀 KEY_PREFIX:1:"keyName")

在使用时不管读取或新增等等操作只要带keyName即可,但不能读取一般key值

最後一个缺点是,使用该方法无法使用redis Lpush、Rpush等等,所以还是建议使用方法二

# django-redis取default值
from django.core.cache import cache # django内建快取

cache.set("keyName", "value", timeout=25) # 设置key、值、逾时时间
cache.get("keyName") # 取值

使用方法2 (get_redis_connection建议使用)

因为方法1会带前缀值,所以当无法决定keyName时可用此方法代替

from django_redis import get_redis_connection # django-redis使用原生连线

# 使用方法几乎等同原生python
cacheCon = get_redis_connection("testRedis") # 指向setting的CACHES > testRedis
cacheCon.set('keyName', 'value')
value = cacheCon.get('keyName')

<<:  [Day 51] 留言板後台及前台(七) - 那些年,我们一起踩的XSS

>>:  企业使用高防服务器究竟有哪些好处?

资产盘点 - 机关资通系统与服务资产清册

一帖内用,一帖外服 找出核心、或是防护等级为求为高的资通系统 适用人员: 资安人员。 适用法规: 资...

[Day - 28] React Hooks useState 学习笔记

前言 这篇文章将会介绍 React Hooks,Hook 是 React 16.8 中增加的新功能。...

Day_09 有线网路应用(二)

前面提到的都是串接主路由,让装openwrt的树梅派成为次级设备,但如果今天想要成为主路由进行ppp...

DAY 10 - 可爱小暴龙

大家好~ 我是五岁~ 今天要来画卡通化的可爱小暴龙~ 因为要画成Q版的可爱暴龙,所以要给他圆圆的大头...

第一天:为什麽该学好 Gradle?

开始接触 Gradle 的原因 身为一位 Kotlin 开发者,每天需要接触的就是 JVM 生态系的...