Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Wydajny sposób mapowania danych z Redis

Możesz użyć leniwego ładowania, więc Roles kolekcja jest ładowana tylko w razie potrzeby. Odbywa się to poprzez wstrzyknięcie repozytorium ról do twojego FullEmployee podmiot.

Możesz także załadować role raz na zawsze:zachowaj słownik ról w swoim FullEmployeeMapper i wypełnij go, gdy są ładowane, a następnie sprawdź to przed wysłaniem zapytania do pamięci podręcznej. Mamy nadzieję, że odtworzysz instancję dla każdej jednostki pracy, dzięki czemu słownik będzie świeży dla każdej nowej pracy i unikniesz problemów z wielowątkowością.

Przykładowa implementacja z 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy wątek Redis list lub set metoda pop jest bezpieczny?

  2. Jak mogę sprawić, by Webmachine i edis współpracowały ze sobą?

  3. Umieszczanie wszystkich obiektów python-rom na liście

  4. Jak określić czas wykonania skryptu Lua w Redis?

  5. Jak odizolować redis aplikacji wiosennego rozruchu i globalną redis sesji wiosennego rozruchu?