public async Task <ServiceRegistryEntity> Remove(ServiceRegistryEntity entity)
        {
            var serviceTag       = entity.Tag;
            var serviceTagExists = await _db.KeyExistsAsync(serviceTag);

            if (!serviceTagExists)
            {
                return(null);
            }

            var serviceInstancesJson = await _db.StringGetAsync(serviceTag);

            var serviceInstances = JsonConvert.DeserializeObject <IList <ServiceRegistryEntity> >(serviceInstancesJson);

            serviceInstances.Remove(serviceInstances.First(x => x.Id == entity.Id));

            if (serviceInstances.Count != 0)
            {
                await _db.StringSetAsync(serviceTag, JsonConvert.SerializeObject(serviceInstances));
            }
            else
            {
                var servicesTagsJson = await _db.StringGetAsync(_servicesTagsKey);

                var servicesTags = JsonConvert.DeserializeObject <IList <string> >(servicesTagsJson);
                servicesTags.Remove(serviceTag);
                await _db.StringSetAsync(_servicesTagsKey, JsonConvert.SerializeObject(servicesTags));

                await _db.KeyDeleteAsync(serviceTag);
            }

            return(entity);
        }
        public async Task <ServiceRegistryEntity> Add(ServiceRegistryEntity entity)
        {
            var serviceTag = entity.Tag;

            if (await _db.KeyExistsAsync(serviceTag))
            {
                var serviceInstancesJson = await _db.StringGetAsync(serviceTag);

                var serviceInstances = JsonConvert.DeserializeObject <IList <ServiceRegistryEntity> >(serviceInstancesJson);
                serviceInstances.Add(entity);
                await _db.StringSetAsync(serviceTag, JsonConvert.SerializeObject(serviceInstances));
            }
            else
            {
                var servicesTagsJson = await _db.StringGetAsync(_servicesTagsKey);

                if (servicesTagsJson.IsNull)
                {
                    await _db.StringSetAsync(_servicesTagsKey, JsonConvert.SerializeObject(new List <string>()
                    {
                        serviceTag
                    }));
                }
                else
                {
                    var servicesTags = JsonConvert.DeserializeObject <IList <string> >(servicesTagsJson);
                    servicesTags.Add(serviceTag);
                    await _db.StringSetAsync(_servicesTagsKey, JsonConvert.SerializeObject(servicesTags));
                }

                await _db.StringSetAsync(serviceTag, JsonConvert.SerializeObject(new List <ServiceRegistryEntity>()
                {
                    entity
                }));
            }

            return(entity);
        }