国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用)

這篇具有很好參考價(jià)值的文章主要介紹了redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1 redis其它操作
2 redis管道

3 django中使用redis
3.1 通用方案
3.2 第三方模塊

4 django緩存

5 celery介紹
5.1 celery的快速使用

1 redis其它操作

'''
delete(*names)
exists(name)
keys(pattern='*')
expire(name ,time)
rename(src, dst)
move(name, db))
randomkey()
type(name)
'''
# redis的key值,最大可以是多少? 最大不超過(guò)512M  一般 1KB
# redis的value值,最大可以是多少? 最大不超過(guò)512M
'''
delete(*names)
exists(name)
keys(pattern='*')
expire(name ,time)
rename(src, dst)
move(name, db))
randomkey()
type(name)
'''

import redis

conn=redis.Redis()
# delete(*names)
# conn.delete('userinfo2')

# exists(name)
# print(conn.exists('name'))

# keys(pattern='*')
# print(conn.keys('user*'))
# print(conn.keys('*'))
# print(conn.keys())


# expire(name ,time)
# conn.expire('name',5)


# rename(src, dst)
# conn.rename('userinfo3','us')

# move(name, db))
# conn.move('us',3)

# randomkey()
# print(conn.randomkey())



# type(name)
# print(conn.type('hash2'))
print(conn.type('us'))


conn.close()

2 redis管道

# 事務(wù)四大特性
	-原子性:要么都成功,要么都失敗
    -一致性:數(shù)據(jù)前后要一致
    -隔離性:多個(gè)事務(wù)之間相互不影響
    -持久性:事務(wù)一旦完成,數(shù)據(jù)永久改變
    
# 關(guān)系型數(shù)據(jù)庫(kù),支持事務(wù)  
    
# redis 有沒有事務(wù)?沒有專門的事務(wù),但是通過(guò)別的方式,可以實(shí)現(xiàn)事務(wù)的幾個(gè)特性,所以咱們認(rèn)為它具備事務(wù)
	-redis要支持事務(wù),要完成事務(wù)的幾大特性,需要使用管道來(lái)支持
    -單實(shí)例redis是支持管道的
    -集群模式下,不支持管道,就不支持事務(wù)
    

import redis

conn = redis.Redis()
# 沒有管道的情況
# conn.decrby('my_money', 10)
# # 如果出現(xiàn)這種情況會(huì)報(bào)錯(cuò):
# # 我的錢扣了,但是有別的邏輯插入,我的錢響應(yīng)的會(huì)扣,但是對(duì)方的賬戶卻沒有加上我轉(zhuǎn)出去的錢
# l = [0, 1, 2]
# print(l[9])
# conn.incrby('zs_money', 10)

# 或者寫成
# conn.set('my_money', 90)
# conn.set('zs_money', 110)

## 通過(guò)管道實(shí)現(xiàn)事務(wù)
pipline = conn.pipeline()
# 創(chuàng)建了一個(gè)管道,把命令都一個(gè)個(gè)放到管道中,先不執(zhí)行,當(dāng)執(zhí)行execute,才會(huì)執(zhí)行管道中所有的命令
pipline.decrby('my_money', 10)
l = [0, 1, 2]
print(l[9])
pipline.incrby('zs_money', 10)
# 只有執(zhí)行了這句代碼,管道中才會(huì)真正的執(zhí)行
pipline.execute()
conn.close()

-------------------------------------------------------------------

### 通過(guò)管道實(shí)現(xiàn)事務(wù)
conn = redis.Redis()
pipline = conn.pipeline(transaction=True)
## 創(chuàng)建了一個(gè)管道,把命令都一個(gè)個(gè)放到管道中,先不執(zhí)行,當(dāng)執(zhí)行execute,才執(zhí)行管道中所有的命令
pipline.decrby('my_money', 10)
# 我的錢扣了,寫了點(diǎn)別的邏輯--》有可能拋異常
l = [0, 2, 3]
print(l[0])

pipline.incrby('zs_money', 10)

pipline.execute()

conn.close()

3 django中使用redis

3.1 通用方案

# 寫一個(gè)池
import redis

POOL = redis.ConnectionPool(max_connections=20)

# 在要使用的地方,導(dǎo)入使用即可
def redis_demo(requset):
    conn = redis.Redis(connection_pool=POOL, decode_responses=True)
    res = conn.incrby('count')
    print(res)

    return HttpResponse(f'您是我們第:{res}個(gè)用戶')

3.2 第三方模塊

# django-redis ---》配置文件中配置即可
pip install django-redis

# 配置文件配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            # "PASSWORD": "123",
        }
    },
}

# 在使用的位置,導(dǎo)入使用
from django_redis import get_redis_connection
def redis_demo(requset):
    conn = get_redis_connection()
    res = conn.incrby('count')
    print(res)

    return HttpResponse(f'您是我們第:{res}個(gè)用戶')

4 django緩存

# redis數(shù)據(jù)存在內(nèi)存中,取放速度快---》非常適合做緩存
	本來(lái)數(shù)據(jù)在mysql中,每次都查詢,速度慢---》把查詢出來(lái)的數(shù)據(jù),暫時(shí)存儲(chǔ)到redis(緩存),下次請(qǐng)求再來(lái),直接從redis中拿,速度就會(huì)很快
    
    
    
# django中如何使用緩存
	-配置文件配置(緩存位置:內(nèi)存,文件中,redis中)
        CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379",
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 100}
                # "PASSWORD": "123",
            }
 	-把數(shù)據(jù)放到緩存中(放到redis中)
      from django.core.cache import cache
      cache.set(key,value可以是任意類型,過(guò)期時(shí)間)
         -redis只支持5大數(shù)據(jù)類型,可以放python的任意類型
         -本質(zhì):pickle序列化---bytes格式---》以redis字符串的形式放在了redis中
      cache.get(key)
            
            
            
            
# 后期咱么在項(xiàng)目中,使用redis作為django的緩存,多一些,盡量不使用原生redis操作

            
# 前后端分離中,使用 cache.set   cache.get   
# 前后端混合中
     可以整站緩存 
     可以要緩存一個(gè)頁(yè)面
     可以緩存頁(yè)面中的某個(gè)位置
# 可以緩存的位置:
     內(nèi)存中
     本地文件中
     數(shù)據(jù)庫(kù)中
     reids中 (咱們用的多)
	
# 測(cè)試緩存---django的緩存----可以發(fā)個(gè)任意,但是redis就不能
class Person:
    pass


def cache_demo_set(request):
    # cache.set('count', 100, 5)  # 往緩存中放了count為100,5秒后過(guò)期
    # cache.set('count', [1, 2, 'hello', '你好'], 5)
    # cache.set('count', {'name': 'ldj', 'age': 19}, 5)
    p = Person()
    p.name = 'ldj'
    cache.set('count', p)
    return HttpResponse('緩存成功')


def cache_demo_get(request):
    # print(cache.get('count'))
    print(cache.get('count').name)
    return HttpResponse('獲取成功')

5 celery介紹

Celery 官網(wǎng):
	http://www.celeryproject.org/
Celery 官方文檔英文版:
	http://docs.celeryproject.org/en/latest/index.html
Celery 官方文檔中文版:
	http://docs.jinkan.org/docs/celery/

# celery是什么?
	分布式異步任務(wù)框架:第三方框架,celery翻譯過(guò)來(lái)是芹菜,吉祥物就是芹菜
    項(xiàng)目中使用異步任務(wù)的場(chǎng)景,可以使用它
    之前做異步,如何做? 異步發(fā)送短信---》開啟多線程---》不便于管理

# celery有什么作用?
	-執(zhí)行異步任務(wù)
    -執(zhí)行延遲任務(wù)
    -執(zhí)行定時(shí)任務(wù)
# celery原理
1)可以不依賴任何服務(wù)器,通過(guò)自身命令,啟動(dòng)服務(wù)
2)celery服務(wù)為為其他項(xiàng)目服務(wù)提供異步解決任務(wù)需求的
注:會(huì)有兩個(gè)服務(wù)同時(shí)運(yùn)行,一個(gè)是項(xiàng)目服務(wù),一個(gè)是celery服務(wù),項(xiàng)目服務(wù)將需要異步處理的任務(wù)交給celery服務(wù),celery就會(huì)在需要時(shí)異步完成項(xiàng)目的需求

人是一個(gè)獨(dú)立運(yùn)行的服務(wù) | 醫(yī)院也是一個(gè)獨(dú)立運(yùn)行的服務(wù)
	正常情況下,人可以完成所有健康情況的動(dòng)作,不需要醫(yī)院的參與;但當(dāng)人生病時(shí),就會(huì)被醫(yī)院接收,解決人生病問(wèn)題
	人生病的處理方案交給醫(yī)院來(lái)解決,所有人不生病時(shí),醫(yī)院獨(dú)立運(yùn)行,人生病時(shí),醫(yī)院就來(lái)解決人生病的需求
    
    
    django如果不用異步,正常運(yùn)行即可,如果想做異步,就借助于 celery來(lái)完成
    
    
    
    
# celery架構(gòu)
	-broker:消息中間件,任務(wù)中間件(消息隊(duì)列:redis,rabbitmq)
    	django要做異步,提交任務(wù)到 任務(wù)中間件中(redis),存儲(chǔ)起來(lái)
        Celery本身不提供消息服務(wù),但是可以方便的和第三方提供的消息中間件集成。包括,RabbitMQ, Redis等等
    -worker:任務(wù)執(zhí)行者,任務(wù)執(zhí)行單元
    	不停的從任務(wù)中間件中取任務(wù),執(zhí)行
        Worker是Celery提供的任務(wù)執(zhí)行的單元,worker并發(fā)的運(yùn)行在分布式的系統(tǒng)節(jié)點(diǎn)中
    -banckend:結(jié)果存儲(chǔ),任務(wù)結(jié)果存儲(chǔ)
    	把任務(wù)執(zhí)行結(jié)果(函數(shù)返回值),存放到結(jié)果存儲(chǔ)中(redis)
        用來(lái)存儲(chǔ)Worker執(zhí)行的任務(wù)的結(jié)果,Celery支持以不同方式存儲(chǔ)任務(wù)的結(jié)果,包括AMQP, redis等
     


###  任務(wù)中間件:redis
###  結(jié)果存儲(chǔ):redis

redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用),redis,緩存,redis,django,pipe,管道文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-722730.html

5.1 celery的快速使用

# 0 開源的,小組織,不支持win,不要就win的問(wèn)題展開討論了
	win上:需要借助于第三方

##### 1 安裝:
 pip install celery  # 最新 5.3.4
###### 2 寫代碼 main.py
import time
from celery import Celery
# 1 實(shí)例化得到對(duì)象
broker = 'redis://127.0.0.1:6379/1'  # 消息中間件 redis
backend = 'redis://127.0.0.1:6379/2'  # 結(jié)果存,用redis
app = Celery('app', broker=broker, backend=backend)

# 編寫任務(wù),必須用app.task 裝飾,才變成了celery的任務(wù)
@app.task
def send_sms():
    time.sleep(1)
    print('短信發(fā)送成功')
    return '手機(jī)號(hào)短信發(fā)送成功'


#### 3 提交任務(wù),使用別的進(jìn)程
from main import send_sms
res=send_sms.delay() 
print(res)


### 4 啟動(dòng)worker---》可以在3之前
# windows:
pip3 install eventlet
celery  -A main worker -l info -P eventlet
# mac  linux
# celery -A main worker -l info


### 5 worker就會(huì)執(zhí)行任務(wù),把執(zhí)行的結(jié)果,放到結(jié)果存儲(chǔ)中

### 6 查看結(jié)果 
from celery.result import AsyncResult
from main import app
id = '92987636-ae9e-4be9-828b-8c2d10fe066a'
if __name__ == '__main__':
    a = AsyncResult(id=id, app=app)
    if a.successful():
        result = a.get()
        print(result)
    elif a.failed():
        print('任務(wù)失敗')
    elif a.status == 'PENDING':
        print('任務(wù)等待中被執(zhí)行')
    elif a.status == 'RETRY':
        print('任務(wù)異常后正在重試')
    elif a.status == 'STARTED':
        print('任務(wù)已經(jīng)開始被執(zhí)行')

到了這里,關(guān)于redis(其它操作、管道)、django中使用redis(通用方案、 第三方模塊)、django緩存、celery介紹(celery的快速使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux部署Redis哨兵集群 一主兩從三哨兵(這里使用Redis6,其它版本類似)

    Linux部署Redis哨兵集群 一主兩從三哨兵(這里使用Redis6,其它版本類似)

    ??????Redis-Sentinel是redis官方推薦的高可用性解決方案,sentinel哨兵是特殊的redis服務(wù),不提供讀寫服務(wù),主要用來(lái)監(jiān)控redis實(shí)例節(jié)點(diǎn),當(dāng)用redis作master-slave的高可用時(shí),如果master本身宕機(jī),redis本身或者客戶端都沒有實(shí)現(xiàn)主從切換的功能,而redis-sentinel就是一個(gè)獨(dú)立運(yùn)行的進(jìn)程

    2024年02月04日
    瀏覽(21)
  • SpringBoot使用Redis作為緩存器緩存數(shù)據(jù)的操作步驟以及避坑方案

    SpringBoot使用Redis作為緩存器緩存數(shù)據(jù)的操作步驟以及避坑方案

    2.1使用之前要明確使用的業(yè)務(wù)場(chǎng)景 例如我們?cè)诘卿洉r(shí),可以讓redis緩存驗(yàn)證碼,又如在分類下顯示菜品數(shù)據(jù)時(shí),我們可以對(duì)分類和菜品進(jìn)行緩存數(shù)據(jù)等等。 2.2導(dǎo)入Redis相關(guān)依賴 2.3在使用的controller層導(dǎo)入RedisTemplate 例如: 說(shuō)明一下:這里為什么使用@Resource注解而不使用@Autowi

    2024年02月16日
    瀏覽(27)
  • Django框架-使用celery(一):django使用celery的通用配置,不受版本影響

    Django框架-使用celery(一):django使用celery的通用配置,不受版本影響

    目錄 一、依賴包情況 二、項(xiàng)目目錄結(jié)構(gòu) ?? 2.1、怎么將django的應(yīng)用創(chuàng)建到apps包 三、celery的配置 2.1、celery_task/celery.py 2.2、celery_task/async_task.py 2.3、celery_task/scheduler_task.py 2.4、utils/check_task.py 四、apps/user中配置相關(guān)處理視圖 4.1、基本配置 4.2、user的models 4.3、user的視圖函數(shù) 五、

    2024年02月13日
    瀏覽(20)
  • Linux通信--構(gòu)建進(jìn)程通信的 方案之管道(下)|使用匿名管道實(shí)現(xiàn)功能解耦|命名管道實(shí)現(xiàn)serve&client通信

    Linux通信--構(gòu)建進(jìn)程通信的 方案之管道(下)|使用匿名管道實(shí)現(xiàn)功能解耦|命名管道實(shí)現(xiàn)serve&client通信

    文章目錄 一、管道的應(yīng)用實(shí)例-父進(jìn)程喚醒子進(jìn)程,子進(jìn)程執(zhí)行某種任務(wù) 二、命名管道 1.創(chuàng)建一個(gè)命名管道 2.匿名管道與命名管道的區(qū)別 3.命名管道的打開規(guī)則 4.用命名管道實(shí)現(xiàn)serverclient通信 后續(xù)將源碼上傳到gitee,上傳后修改鏈接。 管道應(yīng)用的一個(gè)限制就是只能具有共同祖

    2024年02月10日
    瀏覽(28)
  • 使用elasticsearch 8.4.3 的管道解析日志(kibana操作)

    使用elasticsearch 8.4.3 的管道解析日志(kibana操作)

    前言 這是我在這個(gè)網(wǎng)站整理的筆記,有錯(cuò)誤的地方請(qǐng)指出,關(guān)注我,接下來(lái)還會(huì)持續(xù)更新。 作者:神的孩子都在歌唱 以下是一個(gè)簡(jiǎn)單的文檔解析案例,更多的操作解析可以看 : 官方文檔 管道可讓您在插入數(shù)據(jù)之前 對(duì)數(shù)據(jù)執(zhí)行常見轉(zhuǎn)換。例如,您可以使用管道刪除字段、從

    2024年02月22日
    瀏覽(20)
  • SpringBoot中操作Redis通過(guò)所有可能的key查詢存在的key并解析為對(duì)象實(shí)體的通用方法

    SpringBoot中操作Redis通過(guò)所有可能的key查詢存在的key并解析為對(duì)象實(shí)體的通用方法

    SpringBoot中操作Redis的特殊操作-批量查詢(通過(guò)key的集合批量查杜絕模糊搜索)、查詢并解析對(duì)象list: SpringBoot中操作Redis的特殊操作-批量查詢(通過(guò)key的集合批量查杜絕模糊搜索)、查詢并解析對(duì)象list_霸道流氓氣質(zhì)的博客-CSDN博客 在上面講操作redis中特殊操作時(shí),對(duì)于通過(guò)key的集

    2023年04月09日
    瀏覽(19)
  • QT 使用第三方庫(kù)QtXlsx操作Excel表

    QT 使用第三方庫(kù)QtXlsx操作Excel表

    一直以來(lái),都想學(xué)習(xí)一下C/C++如何操作excel表,在網(wǎng)上調(diào)研了一下,覺得使用C/C++去操作很麻煩,遂轉(zhuǎn)向QT這邊;QT有一個(gè)自帶的類 QAxObject ,可以使用他去操作,但隨著了解的深入,覺得他并不是很好,有很多其他缺陷(例如必須電腦安裝了辦公軟件才可以進(jìn)行操作等),所以繼

    2024年02月15日
    瀏覽(100)
  • django后臺(tái)管理中導(dǎo)出Excel表格與其它表格數(shù)據(jù)等功能

    django后臺(tái)管理中導(dǎo)出Excel表格與其它表格數(shù)據(jù)等功能

    需求,在django admin后臺(tái)中添加導(dǎo)出excel表格功能 需求人群:財(cái)務(wù),董事 該插件允許導(dǎo)出文件的格式為:xls,xlsx,csv,tsv,ods,json,yaml,html 執(zhí)行該命令將會(huì)安裝以下插件 ![[Pasted image 20240119043040.png]] ![[Pasted image 20240119043224.png]] 3在訂單models.py相同路徑中創(chuàng)建resources.py文件 ![[Pasted image 2

    2024年01月25日
    瀏覽(15)
  • django中使用redis和django緩存

    # 兩種方式 ?????????-方式一:自定義的通用方案(跟框架無(wú)關(guān)) -寫一個(gè)py文件:redis_pool.py? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#連接池 ? ? ? ? ?? ?import redis ? ? ? ? ? ? POOL=redis.ConnectionPool(max_connections=10)? ? ? ?生成POOL。做成單例 ? ? ? ? -在用的位置,導(dǎo)入直

    2024年02月11日
    瀏覽(18)
  • Python實(shí)現(xiàn)自動(dòng)化辦公(使用第三方庫(kù)操作Excel)

    Python實(shí)現(xiàn)自動(dòng)化辦公(使用第三方庫(kù)操作Excel)

    相關(guān)知識(shí): 獲取所有工作表的數(shù)目 獲取所有工作表的名稱 獲取一張表中單元格的行數(shù) 獲取一張表中單元格的列數(shù) ? 批量讀取數(shù)據(jù):【代碼】 注意openpyxl 和前面的xlrd不一樣,openpyxl讀取的行列是從1開始的,這就對(duì)應(yīng)了Excel表格中的行列的位置 讀取所有行中的所有單元格,并

    2024年01月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包