Удаление элемента из SortedSet в C # - PullRequest
1 голос
/ 11 апреля 2019

Я безуспешно пытаюсь удалить элемент из отсортированного списка Redis

public bool Delete(int id)
        {
            try
            {
                var redisManager = new RedisManagerPool(Global.RedisConnector);
                using (var redis = redisManager.GetClient())
                {
                    var entities = redis.As<BookingRequestModel>();
                    var list = entities.SortedSets["BookingRequests"].GetAll();
     //count = 320
                    var model = list.First(z=>z.Id == id);
                    list.Remove(model);
           //count 319 - however when I refresh the page I still see my old data in grid ...
                    entities.Save();                  
                    return true;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

тоже пробовал вот так:


 public bool Delete(int id)
        {
            try
            {
                var redisManager = new RedisManagerPool(Global.RedisConnector);
                using (var redis = redisManager.GetClient())
                {
                    var entities = redis.As<BookingRequestModel>();
                    var list = entities.SortedSets["BookingRequests"];
                    var model = list.First(z=>z.Id == id);
                    var result = entities.RemoveItemFromSortedSet(list, model); // result is false                  
                    entities.Save();                  
                    return true;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }

Как я там прокомментировал, я все еще вижу старые данные после удаления их из сетки.

Не могли бы вы помочь мне с этим?

1 Ответ

0 голосов
/ 11 апреля 2019

Не понимаю, почему, но это работает:


public bool Delete(int id)
        {
            try
            {
                var redisManager = new RedisManagerPool(Global.RedisConnector);
                using (var redis = redisManager.GetClient())
                {                                   
                    var items = redis.GetAllItemsFromSortedSet("BookingRequests");
                    foreach (var item in items)
                    {
                        var dto = item.FromJson<BookingRequestModel>();
                        if (dto.Id == id)
                        {
                            redis.RemoveItemFromSortedSet("BookingRequests", item);
                            break;
                        }
                    }
                    return true;
                }
            }
            catch (Exception ex)
            {
                return false;
            }
        }
...