/// <summary> /// Get an alliance from cache or database /// </summary> /// <param name="allianceId"></param> /// <param name="onlineOnly"></param> /// <returns></returns> public async Task <Alliance> GetAllianceAsync(long allianceId, bool onlineOnly = false) { lock (_syncObject) { if (ContainsKey(allianceId)) { return(this[allianceId]); } } if (onlineOnly) { return(null); } if (!Redis.IsConnected) { return(await AllianceDb.GetAsync(allianceId)); } var alliance = await Redis.GetAllianceAsync(allianceId); if (alliance != null) { return(alliance); } alliance = await AllianceDb.GetAsync(allianceId); await Redis.CacheAsync(alliance); return(alliance); }
public async Task <Alliance> GetAllianceAsync(long allianceId, bool onlineOnly = false) { lock (_syncObject) { if (ContainsKey(allianceId)) { return(this[allianceId]); } } if (onlineOnly) { return(null); } var alliance = Resources.ObjectCache.GetCachedAlliance(allianceId); if (alliance != null) { return(alliance); } alliance = await AllianceDb.GetAsync(allianceId); Resources.ObjectCache.CacheAlliance(alliance); return(alliance); }