91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【從0開始Python開發實戰】Django集成Redis,

發布時間:2020-03-01 21:02:48 來源:網絡 閱讀:638 作者:wx5b3c0a4298f7b 欄目:編程語言

目錄:

1.?Django集成Redis

2.?封裝服務redis_service.py

3.?單元測試test_redis_serivce.py

4.?Redis讀寫功能調用

5.?常見問題和解決方法


Redis是一個高性能的key-value數據庫,常用于搭建緩存系統,提高并發響應速度。Django集成Redis只需1步配置,秒定。為了增加代碼的兼容和容錯能力,將Redis功能調用封裝為redis_service.py服務。


典型系統架構的數據層和緩存數據讀取流程:

【從0開始Python開發實戰】Django集成Redis,【從0開始Python開發實戰】Django集成Redis,

示例代碼:https://github.com/rickding/HelloPython/tree/master/hello_redis

├── settings.py

├── service

│ ??└── redis_service.py

├── test

│ ??└── test_redis_service.py


一,Django集成Redis


代碼文件

功能要點

Django集成Redis

requirements.txt

安裝Redis包:

django-redis >= 4.10.0

settings.py

配置Redis緩存系統

封裝redis_service服務

redis_serivce.py

封裝Redis調用:get, set, delete, incr

單元測試

test_redis_serivce.py

測試封裝的Redis功能函數

Redis讀寫功能調用

views.py

增加REST接口/chk/cache,調用Redis讀寫功能

1.?新建Django項目,運行:django-admin startproject hello_redis

2.?進到目錄hello_redis,增加應用,運行:python manage.py startapp app

【從0開始Python開發實戰】Django集成Redis,

項目的目錄文件結構如下:

【從0開始Python開發實戰】Django集成Redis,

3.?安裝Redis包,pip install django-redis >= 4.10.0,如果不是新建項目,注意版本兼容問題。

4.?打開settings.py,配置Redis緩存,1步完成:

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

注意Redis服務的IP地址和端口。

5.?代碼中調用緩存功能非常方便:

a)?導入包:from django.core.cache import cache

b)?調用cache.get(key), cache.set(key, value)等函數。


二,封裝服務redis_service.py,調用Redis功能函數

為了增加代碼的兼容和容錯能力,將Redis功能調用封裝在redis_service.py服務中:

1.?String操作

a)?get(key)

b)?set(key, str_value)

2.?dict操作

a)?get_dict(key)

b)?set_dict(key, dict_value)

import json
from django.core.cache import cache

def get(key):
????return cache.get(key)

def set(key, value):
????return cache.set(key, value)

# cache dict: json.dumps and loads, not hash
def get_dict(key):
????value = cache.get(key)
????if value is None:
????????return None

????return json.loads(value)

def set_dict(key, value_dict):
????return cache.set(key, json.dumps(value_dict))

還有對列表、集合、哈希表等操作。


三,單元測試test_redis_service.py

【從0開始Python開發實戰】Django集成Redis,

運行python manage.py test:

【從0開始Python開發實戰】Django集成Redis,

四,Redis讀寫功能調用

1.?在views.py中增加請求處理函數,調用Redis讀寫功能

from django.http import HttpResponse
from hello_redis.service import redis_service as cache

def chk_cache(req):
????key = 'chk_cache: %s, %s, %s' % (req.get_raw_uri(), req.get_full_path(), req.get_host())
????value = cache.incr(key)
????cache.set(key, value * 2)

????return HttpResponse('cache, key: {}, value: {}, ttl: {}'.format(key, cache.get(key), cache.ttl(key)))

2. 在urls.py中配置路由

from django.urls import path
from app.views import chk_cache

urlpatterns = [
????path('', chk_cache, name='chk'),
]

3. 運行命令啟動服務:python manage.py runserver 0.0.0.0:8001

【從0開始Python開發實戰】Django集成Redis,

4. REST接口調用redis_service示例

【從0開始Python開發實戰】Django集成Redis,

五,常見問題和解決方法

1.?集成Redis,配置settings.py,檢查無誤,運行依然出錯:

InvalidCacheBackendError: Could not find backend 'django_redis.cache.RedisCache': cannot import name get_cache

解決:將django-redis版本從3.8.3升級到4.10.0

原因:Redis版本兼容問題。


2.?調用incr(key, amount),運行出錯:key not found

解決:先調用has_key(key)判斷是否存在,不存在時調用set(key, amount)

原因:Redis版本兼容問題。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

疏附县| 昌乐县| 昭通市| 安仁县| 乌拉特后旗| 合肥市| 内江市| 河源市| 电白县| 洮南市| 和平区| 宜川县| 广汉市| 安达市| SHOW| 修水县| 玛多县| 广德县| 西林县| 怀来县| 淮北市| 荆门市| 富顺县| 佛冈县| 陕西省| 靖边县| 伊宁县| 南丹县| 庆云县| 大足县| 武汉市| 东宁县| 军事| 聂拉木县| 始兴县| 建阳市| 泽州县| 兴隆县| 石屏县| 如东县| 武清区|