Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Cách hiệu quả để ánh xạ dữ liệu từ Redis

Bạn có thể sử dụng tính năng tải chậm để Roles bộ sưu tập chỉ được tải nếu cần. Điều này được thực hiện bằng cách đưa một kho lưu trữ vai trò vào FullEmployee của bạn thực thể.

Bạn cũng có thể tải các vai trò một lần cho tất cả:giữ một Từ điển về các vai trò trong FullEmployeeMapper của bạn và điền vào khi chúng được tải, sau đó kiểm tra trước khi truy vấn bộ đệm. Hy vọng rằng bạn tạo lại một phiên bản cho mỗi đơn vị tác phẩm để từ điển sẽ luôn mới mẻ cho mỗi tác phẩm mới và bạn tránh được các vấn đề về đa luồng.

Triển khai mẫu với 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. Tập lệnh Lua cho Redis tính tổng các giá trị của các khóa

  2. Thư viện Redis tốt nhất cho Java

  3. Tích hợp Redis vào lỗi JHipster CacheConfiguration

  4. Các mẫu thiết kế JavaScript - Đối phó với sự không đồng bộ không mong muốn

  5. Làm cách nào để lưu trữ một mảng trong redis?