sql >> Databáze >  >> NoSQL >> Redis

Efektivní způsob mapování dat z Redis

Můžete použít líné načítání, takže Roles kolekce se načítá pouze v případě potřeby. To se provádí vložením úložiště rolí do vašeho FullEmployee entity.

Můžete také načíst role jednou provždy:ponechte si slovník rolí ve svém FullEmployeeMapper a vyplňte jej při načítání, poté jej zkontrolujte před dotazem na mezipaměť. Doufejme, že znovu vytvoříte instanci pro každou jednotku práce, takže slovník bude čerstvý pro každou novou práci a vyhnete se problémům s vícevlákny.

Ukázková implementace s List :

class FullEmployeeMapper : IMapToNew<Employee, FullEmployee>
{
    private List<FullRole> _roles = new List<FullRole>();
    public FullEmployee Map(Employee source)
    {
        FullEmployee employee = new FullEmployee()
        {
            Id = source.Id,
            Age = source.Age,
            BirthDate = source.BirthDate,
            Name = source.Name
        };

        var mapper = new FullRoleMapper();
        var client = new RedisClient("localhost");

        employee.Roles = _roles.Where(r => source.Roles.Contains(r.Id)).ToList();
        if (employee.Roles.Count != source.Roles.Count)
        {
            var newRoles = client
                .As<Role>()
                .GetByIds(source.Roles.Except(employee.Roles.Select(r => r.Id)))
                .Select(r => mapper.Map(r)))
                .ToList();
            employee.Roles.AddRange(newRoles);
            _roles.AddRange(newRoles);
        }
        return employee;
    }
}


  1. Jak provést dotaz s nastavením časového pásma v Mongodb

  2. Dotaz IDE pro MongoDB?

  3. Vytváření a správa více připojení v Redis Pythonu

  4. Jak získat více hodnot seznamu v jednom volání v RedisTemplate klienta Jedis