sql >> Databasteknik >  >> NoSQL >> Redis

Effektivt sätt att kartlägga data från Redis

Du kan använda lazy loading så Roles samling laddas endast om det behövs. Detta görs genom att injicera ett rollförråd i din FullEmployee enhet.

Du kan också ladda rollerna en gång för alla:håll en ordbok över roller i din FullEmployeeMapper och fyll det när de laddas och kontrollera det innan du frågar cachen. Förhoppningsvis återskapar du en instans för varje arbetsenhet så att ordboken blir fräsch för varje nytt arbete och du undviker problem med flera trådar.

Exempelimplementering med en 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. Vad är ett rent sätt att stoppa mongod på Mac OS X?

  2. Hur kan jag bygga ett program med c++ drivrutinen för mongodb?

  3. Hur kan jag spara flera dokument samtidigt i Mongoose/Node.js?

  4. Hur man implementerar multitenancy för redis in spring boot