public CompletableFuture<Void> setAsync(UUID uuid, VersionedProfile versionedProfile) {
    return profiles.setAsync(uuid, versionedProfile)
        .thenCompose(ignored -> redisSetAsync(uuid, versionedProfile));
  }
@Test
  public void testSetAsync() {
    final UUID uuid = UUID.randomUUID();
    final byte[] name = TestRandomUtil.nextBytes(81);
    final VersionedProfile profile = new VersionedProfile("someversion", name, "someavatar", null, null,
        null, null, "somecommitment".getBytes());

    when(asyncCommands.hset(eq("profiles::" + uuid), eq("someversion"), anyString())).thenReturn(MockRedisFuture.completedFuture(null));
    when(profiles.setAsync(eq(uuid), eq(profile))).thenReturn(CompletableFuture.completedFuture(null));

    profilesManager.setAsync(uuid, profile).join();

    verify(asyncCommands, times(1)).hset(eq("profiles::" + uuid), eq("someversion"), any());
    verifyNoMoreInteractions(asyncCommands);

    verify(profiles, times(1)).setAsync(eq(uuid), eq(profile));
    verifyNoMoreInteractions(profiles);
  }