緩存

架構

CS架構(client/server):客戶端/服務器

BS架構(brower/server):瀏覽器/服務器

區別:

  • 客戶端負載
    • CS負載大
      • 更新維護,收集用戶信息,和用戶交互,發送請求
    • BS負載小,只負責展示,將邏輯處理的過程交給了服務器
  • 維護成本(版本迭代,bug修改,運維相關)
    • CS大
      • 需要下載更新包
    • BS小
      • 只需要修改服務器
  • 安全性
    • CS高
      • 需要下載客戶端
    • BS低
      • 用戶量羣體較大,不穩定

手機app

  • 原生:安卓寫的
  • html:安卓->瀏覽器->html頁面

數據庫優化

  • sql語句
      • 少使用*
      • 使用join代替子查詢(where from–需要別名)
      • 索引字段靠左原則
      • where,group by,having
  • 表結構優化
    • 字段
      • 字段類型的選擇
    • 主鍵外鍵
      • 分表
    • 三範式
  • 庫結構優化
    • 分庫
      • 水平
      • 垂直
  • 水平分表
    • 主鍵全局唯一
  • 水平分庫分表
    • 事務的處理,關聯查詢
  • 數據庫架構優化

性能不高->IO操作

mysql數據存儲在硬盤

硬盤->加載->內存->讀

緩存

緩存是一類快速讀取數據的介質。常用的緩存介質是讀取數據快的內存。

一般來說,從數據庫中多次將需要的數據取出,要比從內存中或者硬盤中一次性將數據取出來成本高。

對於大中型網站而言,使用緩存減少了數數據庫的訪問次數,從而提高了網站的性能。

緩存:緩存就是將數據提前放在一個地方(內存),訪問時,直接從緩存中返回數據,不需要再次查詢數據庫。

緩存邏輯

判斷想要的數據是否在緩存當中

    • 直接返回數據
    • 查詢數據庫,保存在緩存中,返回數據

緩存常用的方式

Memcache緩存:是分佈式的高速緩存技術,是當下最火的,使用最多的。

(一)安裝

1.本地安裝

在這裏插入圖片描述

查看並啓動服務
在這裏插入圖片描述

2.安裝

pip install python-memcached

(二)在django項目中使用緩存

配置settings.py

找到全局settings.py文件

在這裏插入圖片描述

粘貼過來並修改

在這裏插入圖片描述

使用

1.在視圖中使用

在這裏插入圖片描述
在這裏插入圖片描述

2.在路由中使用緩存

在這裏插入圖片描述
在這裏插入圖片描述

3.在中間件中使用

作用範圍:全局
在這裏插入圖片描述

4.頁面緩存

被cache標籤包起來的部分會被緩存下來
在這裏插入圖片描述

5.視圖內部數據的緩存

視圖

from django.core.cache import cache
def cache_test(request):
    # 從緩存中提取數據
    # 根據order_number獲取order_total
    order_number = request.GET.get('order_number')
    data = cache.get(order_number)
    # 如果沒有,數據查詢,增加到緩存中
    print('-----------------------')
    if not data:
        print('++++++++++++++++++++++')
        payorder = PayOrder.objects.filter(order_number=order_number).first()
        # 將數據寫入cache
        cache.set(order_number,payorder.order_total,60)
        data = payorder.order_total
    return HttpResponse('order_total:%s'%data)

路由
在這裏插入圖片描述
在這裏插入圖片描述

兩次執行,控制檯返回的效果不同
在這裏插入圖片描述

說明第一次調用時緩存中沒有該數據,就進入了判斷,進行了數據庫查詢後,將數據存入緩存中。

第二次調用時,緩存中有該數據,沒有進入判斷,直接從緩存中取出了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章