public void Start()
        {
            _log.Info("Getting disclaimers and lykke entities to cache");

            Task <IReadOnlyList <IDisclaimer> >  disclaimersTask = _disclaimerRepository.GetAllAsync();
            Task <IReadOnlyList <ILykkeEntity> > entitiesTask    = _lykkeEntityRepository.GetAsync();

            Task.WhenAll(disclaimersTask, entitiesTask).GetAwaiter().GetResult();

            _log.Info("Caching disclaimers");

            var tasks = new List <Task>();

            foreach (IEnumerable <IDisclaimer> disclaimers in disclaimersTask.Result.Batch(100))
            {
                tasks.AddRange(disclaimers.Select(x => _redisService.AddDisclaimerAsync(x)));
                Task.WhenAll(tasks).GetAwaiter().GetResult();
                tasks.Clear();
            }

            _log.Info("Caching disclaimers finished");

            _log.Info("Caching lykke entities");

            foreach (IEnumerable <ILykkeEntity> entities in entitiesTask.Result.Batch(100))
            {
                tasks.AddRange(entities.Select(x => _redisService.AddLykkeEntityAsync(x)));
                Task.WhenAll(tasks).GetAwaiter().GetResult();
                tasks.Clear();
            }

            _log.Info("Caching lykke entities finished");
        }
        public async Task <ILykkeEntity> AddAsync(ILykkeEntity lykkeEntity)
        {
            ILykkeEntity existingLykkeEntity = await _redisService.GetLykkeEntityAsync(lykkeEntity.Id);

            if (existingLykkeEntity != null)
            {
                throw new LykkeEntityAlreadyExistsException(lykkeEntity.Id);
            }

            ILykkeEntity createdLykkeEntity = await _lykkeEntityRepository.InsertAsync(lykkeEntity);

            await _redisService.AddLykkeEntityAsync(createdLykkeEntity);

            _log.Info("Lykke entity added", createdLykkeEntity);

            return(createdLykkeEntity);
        }