Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Cara yang efisien untuk memetakan data dari Redis

Anda dapat menggunakan pemuatan lambat jadi Roles koleksi dimuat hanya jika diperlukan. Ini dilakukan dengan menyuntikkan repositori peran di FullEmployee . Anda entitas.

Anda juga dapat memuat peran sekali untuk semua :simpan Kamus peran di FullEmployeeMapper Anda dan isi saat dimuat lalu periksa sebelum menanyakan cache. Mudah-mudahan Anda membuat ulang sebuah instance untuk setiap unit kerja sehingga kamus akan segar untuk setiap karya baru dan Anda menghindari masalah multithreading.

Contoh implementasi dengan 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. Stackexchange.Redis mengapa ConnectionMultiplexer.Connect membuat dua koneksi klien?

  2. Mencari nilai redis db

  3. Akses redis buruh pelabuhan dari host windows

  4. Redis:Urutkan dan dapatkan n Kunci Tetangga

  5. Waktu pembuatan kunci di redis