code: func (rbds *redisBlobDescriptorService) stat(ctx context.Context, conn redis.Conn, dgst digest.Digest) (distribution.Descriptor, error) {
  	reply, err := redis.Values(conn.Do("HMGET", rbds.blobDescriptorHashKey(dgst), "digest", "size", "mediatype"))
  	if err != nil {
  		return distribution.Descriptor{}, err
  	}
  
  	// NOTE(stevvooe): The "size" field used to be "length". We treat a
  	// missing "size" field here as an unknown blob, which causes a cache
  	// miss, effectively migrating the field.
  	if len(reply) < 3 || reply[0] == nil || reply[1] == nil { // don't care if mediatype is nil
  		return distribution.Descriptor{}, distribution.ErrBlobUnknown
  	}
  
  	var desc distribution.Descriptor
  	if _, err := redis.Scan(reply, &desc.Digest, &desc.Size, &desc.MediaType); err != nil {
  		return distribution.Descriptor{}, err
  	}
  
  	return desc, nil
  }
docs: // stat provides an internal stat call that takes a connection parameter. This
  // allows some internal management of the connection scope.