數據緩存

Datory 框架默認包含緩存機制,對(duì)于需要頻繁獲取的數據,我們通過(guò) Query 對(duì)象的 CachingGet 從緩存獲取數據(當緩存不存在時(shí),系統將(jiāng)從數據庫獲取并將(jiāng)數據添加至緩存),通過(guò) Query 對(duì)象的 CachingRemove 方法清除緩存。

獲取緩存

var cacheKey = "XYCMS.Core.Repositories.User." + userName;
var dataModel = await GetAsync(Q
    .Where("UserName", userName)
    .CachingGet(cacheKey)
);
1
2
3
4
5

以上代碼首先定義了緩存鍵 cacheKey 的值,我們需要保證 cacheKey 值的唯一性,系統將(jiāng)首先通過(guò)緩存鍵從内存或者Redis中獲取數據,如果沒(méi)有對(duì)應的數據,系統將(jiāng)從數據庫中獲取數據并將(jiāng)獲取到的數據緩存起(qǐ)來。

清除緩存

通常更新數據後(hòu)需要清除緩存,這(zhè)時(shí)候我們需要使用 CachingRemove 方法:

var cacheKey = "XYCMS.Core.Repositories.User." + userName;
await _repository.UpdateAsync(Q
    .Set("Title", "新标題")
    .Set("Count", 100)
    .Where("UserName", userName)
    .CachingRemove(cacheKey)
);
1
2
3
4
5
6
7

以上代碼將(jiāng)更新數據值,同時(shí)清除緩存。

Redis 緩存

Datory 框架默認使用内存作爲緩存系統,如果希望使用Redis作爲緩存系統,需要在構建 Repository 數據倉庫對(duì)象時(shí)傳遞 Redis 連接信息:

var repository = new Repository<DataModel>(settingsManager.Database, settingsManager.Redis);
1

Repository 構造函數中第一個參數爲數據庫連接信息,第二個參數爲Redis連接信息。