public async Task <Dictionary <string, string> > GetUserConnectionsAsync(string userId)
        {
            string cacheKey             = CacheKeyFactories.GenerateConnectionCacheKey(userId, EntityKey);
            int    countConnectionsInDb = await connectionProvider.CountConnectionsAsync(userId);

            var dataFromCache = await CacheGetString(cacheKey);

            if (countConnectionsInDb == 0 && dataFromCache == null || (dataFromCache == null || dataFromCache.Connections.Keys.Count == 0))
            {
                return(null);
            }

            if (dataFromCache.Connections.Keys.Count > 0 && dataFromCache.Connections.Count == countConnectionsInDb)
            {
                return(dataFromCache.Connections);
            }

            var connectionsFromDb = await connectionProvider.GetModelsBySearchPredicate(x => x.UserId == userId);

            var connectionsIdentefier = new Dictionary <string, string>();

            foreach (var connection in connectionsFromDb)
            {
                connectionsIdentefier.Add(connection.ConnectionId, connection.SessionId);
            }

            var cacheValue = new ConnectionCacheModel()
            {
                UserId      = userId,
                Connections = connectionsIdentefier
            };

            await CacheUpdateString(cacheKey, cacheValue, TimeSpan.FromMinutes(tokenOptions.Value.AccessTokenLifeTime));

            return(cacheValue.Connections);
        }