servicestack.redis,C#,servicestack.redis" /> servicestack.redis,C#,servicestack.redis" />

C# redis servicestack客户端列表。删除(项)无效

C# redis servicestack客户端列表。删除(项)无效,c#,servicestack.redis,C#,servicestack.redis,我正在开发一个“任务控制系统”,允许用户输入任务描述信息,包括何时执行任务以及任务所需的环境(操作系统、浏览器等) “控制器”保存描述信息并安排任务。当计划时间到达时,调度器检索任务信息,并为符合所需环境的远程计算机“排队”任务 我的第一个切入点是使用关系数据库来持久化任务描述和足够的历史信息来跟踪问题(大约2周)。但这不是一个“大数据”问题,关系很简单,我需要更好的性能 因此,我正在寻找性能更好的产品。 我正在尝试使用redis来实现这一点,但我遇到了一些问题。我在客户端使用ServiceSt

我正在开发一个“任务控制系统”,允许用户输入任务描述信息,包括何时执行任务以及任务所需的环境(操作系统、浏览器等)

“控制器”保存描述信息并安排任务。当计划时间到达时,调度器检索任务信息,并为符合所需环境的远程计算机“排队”任务

我的第一个切入点是使用关系数据库来持久化任务描述和足够的历史信息来跟踪问题(大约2周)。但这不是一个“大数据”问题,关系很简单,我需要更好的性能

因此,我正在寻找性能更好的产品。 我正在尝试使用redis来实现这一点,但我遇到了一些问题。我在客户端使用ServiceStack.Redis 3.9.71.0版,服务器使用Redis 2.8.4版

此示例代码取自Dan Swain的教程。它已更新为与ServiceStack.Redis客户端V3.9.71.0一起使用。大部分是有效的,但“当前发货人。删除(跛脚发货人);”不起作用。 有人知道为什么会这样吗

谢谢

   public void ShippersUseCase()
    {
        using (var redisClient = new RedisClient("localhost"))
        {
            //Create a 'strongly-typed' API that makes all Redis Value operations to apply against Shippers
            var redis = redisClient.As<Shipper>();

            //Redis lists implement IList<T> while Redis sets implement ICollection<T>
            var currentShippers = redis.Lists["urn:shippers:current"];
            var prospectiveShippers = redis.Lists["urn:shippers:prospective"];

            currentShippers.Add(
                new Shipper
                    {
                        Id = redis.GetNextSequence(),
                        CompanyName = "Trains R Us",
                        DateCreated = DateTime.UtcNow,
                        ShipperType = ShipperType.Trains,
                        UniqueRef = Guid.NewGuid()
                    });

            currentShippers.Add(
                new Shipper
                    {
                        Id = redis.GetNextSequence(),
                        CompanyName = "Planes R Us",
                        DateCreated = DateTime.UtcNow,
                        ShipperType = ShipperType.Planes,
                        UniqueRef = Guid.NewGuid()
                    });

            var lameShipper = new Shipper
                                  {
                                      Id = redis.GetNextSequence(),
                                      CompanyName = "We do everything!",
                                      DateCreated = DateTime.UtcNow,
                                      ShipperType = ShipperType.All,
                                      UniqueRef = Guid.NewGuid()
                                  };

            currentShippers.Add(lameShipper);

            Dump("ADDED 3 SHIPPERS:", currentShippers);

            currentShippers.Remove(lameShipper);

            .
            .
            .

        }
    }
显示如何实现List.Contains、List.Find和List.Remove。一旦应用到“Shipper”类,问题就解决了

    public override bool Equals(object obj)
    {
        if (obj == null)
        {
            return false;
        }

        var input = obj as Shipper;
        return input != null && Equals(input);
    }

    public bool Equals(Shipper other)
    {
        return other != null && (Id.Equals(other.Id));
    }

    public override int GetHashCode()
    {
        return (int)Id;
    }