數據緩存

Datory 框架默認包含緩存機制,對于(yú)需要(yào / yāo)頻繁獲取的(de)數據,我們通過 Query 對象的(de) CachingGet 從緩存獲取數據(當緩存不(bù)存在(zài)時(shí),系統将從數據庫獲取并将數據添加至緩存),通過 Query 對象的(de) CachingRemove 方法清除緩存。

獲取緩存

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

以(yǐ)上(shàng)代碼首先定義了(le/liǎo)緩存鍵 cacheKey 的(de)值,我們需要(yào / yāo)保證 cacheKey 值的(de)唯一(yī / yì /yí)性,系統将首先通過緩存鍵從内存或者Redis中獲取數據,如果沒有對應的(de)數據,系統将從數據庫中獲取數據并将獲取到(dào)的(de)數據緩存起來(lái)。

清除緩存

通常更新數據後需要(yào / yāo)清除緩存,這(zhè)時(shí)候我們需要(yào / yāo)使用 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

以(yǐ)上(shàng)代碼将更新數據值,同時(shí)清除緩存。

Redis 緩存

Datory 框架默認使用内存作爲(wéi / wèi)緩存系統,如果希望使用Redis作爲(wéi / wèi)緩存系統,需要(yào / yāo)在(zài)構建 Repository 數據倉庫對象時(shí)傳遞 Redis 連接信息:

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

Repository 構造函數中第一(yī / yì /yí)個(gè)參數爲(wéi / wèi)數據庫連接信息,第二個(gè)參數爲(wéi / wèi)Redis連接信息。