數據緩存
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
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
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連接信息。