真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,

目錄:

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出二道江免費做網(wǎng)站回饋大家。

1.?Django集成redis

2.?封裝服務(wù)redis_service.py

3.?單元測試test_redis_serivce.py

4.?Redis讀寫功能調(diào)用

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

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

典型系統(tǒng)架構(gòu)的數(shù)據(jù)層和緩存數(shù)據(jù)讀取流程:

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,【從0開始Python開發(fā)實戰(zhàn)】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緩存系統(tǒng)

封裝redis_service服務(wù)

redis_serivce.py

封裝Redis調(diào)用:get, set, delete, incr

單元測試

test_redis_serivce.py

測試封裝的Redis功能函數(shù)

Redis讀寫功能調(diào)用

views.py

增加REST接口/chk/cache,調(diào)用Redis讀寫功能

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

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

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,

項目的目錄文件結(jié)構(gòu)如下:

【從0開始Python開發(fā)實戰(zhàn)】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服務(wù)的IP地址和端口。

5.?代碼中調(diào)用緩存功能非常方便:

a)?導(dǎo)入包:from django.core.cache import cache

b)?調(diào)用cache.get(key), cache.set(key, value)等函數(shù)。

二,封裝服務(wù)redis_service.py,調(diào)用Redis功能函數(shù)

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

1.?對String操作

a)?get(key)

b)?set(key, str_value)

2.?對dict操作

a)?get_dict(key)

b)?set_dict(key, dict_value)

importjson
fromdjango.core.cacheimportcache

defget(key):
????returncache.get(key)

defset(key,value):
????returncache.set(key,value)

# cache dict: json.dumps and loads, not hash
defget_dict(key):
????value = cache.get(key)
????ifvalueis None:
????????return None

????returnjson.loads(value)

defset_dict(key,value_dict):
????returncache.set(key,json.dumps(value_dict))

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

三,單元測試test_redis_service.py

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,

運行python manage.py test:

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,

四,Redis讀寫功能調(diào)用

1.?在views.py中增加請求處理函數(shù),調(diào)用Redis讀寫功能

fromdjango.httpimportHttpResponse
fromhello_redis.serviceimportredis_serviceascache

defchk_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)

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

2. 在urls.py中配置路由

fromdjango.urlsimportpath
fromapp.viewsimportchk_cache

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

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

【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,

4. REST接口調(diào)用redis_service示例

【從0開始Python開發(fā)實戰(zhàn)】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.?調(diào)用incr(key, amount),運行出錯:key not found

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

原因:Redis版本兼容問題。


網(wǎng)頁名稱:【從0開始Python開發(fā)實戰(zhàn)】Django集成Redis,
網(wǎng)站URL:http://weahome.cn/article/gsjdeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部