用c#更新Redis中的值

本文关键字:Redis 更新 | 更新日期: 2023-09-27 17:50:46

我运行Redis的Windows服务器版本,然后有一个小的客户端应用程序,我无法找出我如何更新我已经在数据库中拥有的数据类型的值

我有这个Leader类,如果它存在于给定的地区,我想更新它,否则创建一个新条目

public class Leader
{
    public Employee Employee { get; set; }
    public District District { get; set; }
}
    public void SetLeader(District district, Employee employee)
    {
        using (var leaderSession = _redisClient.GetTypedClient<Leader>())
        {
            var leader = leaderSession.GetAll().SingleOrDefault(x => x.District.Id == district.Id);
            if (leader != null)
            {
                leader.Employee = employee;
            }
            else
            {
                leader = new Leader{District = district, Employee = employee};
            }
            leaderSession.Store(leader);
        }
    }

但是当我这样做时,我只是在数据库中获得一个额外的条目,所以Store不是正确的命令,但我应该使用哪个?

我能想到的唯一解决方案是删除旧的,并存储一个新的,但这似乎有点无效?(这在我的例子中并不重要,但仍然)

编辑:做删除也不起作用,它仍然创建一个新的并保留旧的

    public void SetLeader(District district, Employee employee)
    {
        using (var leaderSession = _redisClient.GetTypedClient<Leader>())
        {
            var leader = leaderSession.GetAll().SingleOrDefault(x => x.District.Id == district.Id);
            if (leader != null)
            {
                leaderSession.Delete(leader);
            }
            leader = new Leader { District = district, Employee = employee };
            leaderSession.Store(leader);
        }
    }

Edit 2为Leader添加Id字段显然是必要的,这样可以区分不同的行

所以改成这个就行了

public class Leader
{
    public long Id { get; set; }
    public Employee Employee { get; set; }
    public District District { get; set; }
}

用c#更新Redis中的值

为Leader添加Id字段显然是必要的,这样可以区分不同的行

所以改成这个就行了

public class Leader
{
    public long Id { get; set; }
    public Employee Employee { get; set; }
    public District District { get; set; }
}