c# - 使用 C# 更新 Redis 中的值

标签 c# redis

我运行 Windows 服务器版本的 Redis,然后有一个小的客户端应用程序,但我不知道如何更新数据库中已有数据类型的值

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

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);
        }
    }

编辑 2 为 Leader 添加一个 Id 字段显然是区分不同行的必要条件

所以改成这样就可以了

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

最佳答案

给 Leader 添加一个 Id 字段显然是区分不同行的必要条件

所以改成这样就可以了

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

关于c# - 使用 C# 更新 Redis 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14181439/

相关文章:

Redis 每分钟在 slave 上更新 .rdb 文件

Redis master 比 Redis slave 多运行几个命令

c# - CSS 类应用于没有该类名的元素,有什么想法吗?

c# - 多个 Pen 对象 C#

mysql - Yii2 将数据库表镜像到 redis 以实现高速事件记录查询

python - Jinja 2 不会迭代我的 python 字典(从 Redis 读取)

ruby - NoMethodError(未定义方法 `slice!' 为 nil :NilClass) from Redis call

c# - 使用 dotnet cli 无法恢复 Mvc CodeAnalysis 依赖项

c# - Dapper:帮助我运行具有多个用户定义的表类型的存储过程

c# - 与基准测试相比,StackExchange redis 客户端非常慢