public Mono<UserRole> queryUserRoleById(@NotNull Long id) {
        try {
            Validator.notNull(id, "id");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        UserRole userRole = idToRole.get(id);
        if (userRole == null) {
            return userRoleRepository.findById(id)
                    .doOnNext(type -> idToRole.put(id, type));
        }
        return Mono.just(userRole);
    }
@implNote Note that we don't need to remove corresponding groups in {@link #idToRole} because
          their data will be synced in the watch callback.
turms-service/src/main/java/im/turms/service/domain/user/service/UserRoleService.java