iT邦幫忙

1

自我筆記 - 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')

尚未有邦友留言

立即登入留言