public Task UpdatePairAsync(QuoteMessage quote)
        {
            var assetPair = _pairs.AddOrUpdate(
                key: quote.AssetPair,
                addValueFactory: assetPairId => Create(quote),
                updateValueFactory: (assetPairId, pair) => UpdateAssetPairPrice(pair, quote));

            return(Task.WhenAll(_myNoSqlWriterWrapper.TryInsertOrReplaceAsync(AssetPairPriceNoSql.Create(assetPair)),
                                _redisService.AddAssetPairPriceAsync(assetPair)));
        }
        public Task InitCacheAsync(AssetPairPrice[] pairsToCache)
        {
            var entries = pairsToCache.Select(p => new KeyValuePair <string, AssetPairPrice>(p.AssetPair, p));

            _pairs = new ConcurrentDictionary <string, AssetPairPrice>(entries);

            var tasks = new List <Task>();

            foreach (var pair in _pairs.Values)
            {
                tasks.Add(_redisService.AddAssetPairPriceAsync(pair));
                tasks.Add(_myNoSqlWriterWrapper.TryInsertOrReplaceAsync(AssetPairPriceNoSql.Create(pair)));
            }

            return(Task.WhenAll(tasks));
        }