資料查詢 快取層的構建

2022-07-01 12:03:08 字數 1338 閱讀 9591

可以將一些經常需要在資料庫中提取的資料快取到redis中
資料快取層的原理

資料快取層實際上就是對乙個巨大的存在於記憶體中的dataset進行管理,其原理如下:

(1)資料快取層維護乙個大dataset,這個dataset以static存在於應用程式中,這是快取資料集。

(2)客戶端發起請求,資料查詢請求傳送到資料快取層。

(3)資料快取層查詢快取起來的資料查詢條件,查詢該查詢條件是否被使用過。

(4)如果該查詢條件以前使用過,則不從資料庫查詢資料,只從快取資料集中查詢。

(5)如果該查詢條件以前沒有用過 ,則呼叫資料訪問層從資料庫中查詢資料,並將查詢資料合併到快取資料集中,同時快取該查詢條件。

(6)更新資料時,將要更新的資料更新到資料庫中,同時更新快取資料集中的資料。

(7)在查詢或更新資料時,都在快取資料集相應資料表的擴充套件屬性中記錄當前訪問時間。

(8)每隔一段時間對快取資料集進行清理,當其中某條資料行超過一定時間(可以在配置檔案中進行配置)沒有訪問,則將該錶釋放。

定義

**相關**分析: **

def get_user_by_identity():

"""根據jwt token獲取使用者身份資訊"""

identity = get_jwt_identity()

user_id = identity["id"]

# 快取層, 先到redis中查詢是否有登入使用者的資訊,找不到再去mysql,然後mysql返回的資料先儲存到redis

user_info = redis.get("user_%s" % user_id)

if user_info:

data = json.loads(user_info)

return user.init_user_info(data)

else:

user = user.query.filter(user.id==user_id).first()

# 快取到redis中

data = json.dumps(user.get_user_data())

redis.set("user_%s" % user_id, data)

return user

本例中首先根據flask_jwt驗證後,獲取到使用者的身份資訊(使用者id值), 然後首先根據使用者的id去redis中查詢使用者相關的資訊,如果找到了就返回(這樣就不需要再去mysql中進行查詢了), 如果找不到,就去mysql中獲取使用者的資訊,然後儲存到redis中,下次的時候就會在redis中獲取了

jmeter根據查詢資料查詢結果

前兩天試了 一下根據請求查詢出的userid,查詢該userid的資訊。1.新建 1 新建執行緒組 2 新建http請求預設值 3 新建http cookie管理器 4 新建http資訊頭管理器 5 新建登入請求,並新增正規表示式獲取token 2.迴圈控制器 1 新增迴圈控制器,設定迴圈次數 2 ...

資料查詢的例子

經常可以遇到這種情況 用不同的sql寫法可以達到同樣的目的。愛鑽牛角尖的人就想搞明白,誠然結果一樣,但到底孰優孰劣?下面是我列出的一些,請兄弟們賜教。也請兄弟們將你們遇到的類似問題一併列出。1 一次插入多條資料時 create table tb id int,名稱 nvarchar 30 備註 nv...

簡單的資料查詢

簡單的資料查詢 簡單的查詢語句 select from 投影操作 seleact 列1,列2 from 表名 列名列表幾種書寫方式 1.如果我們選擇某個表中的多個列,那麼列名之間用逗號分隔開 2.如果是單個列,只需要列出該列的列名即可 3.如果選擇所有的列,可以簡單的用 號帶代替列名列表。如何查詢 ...