public Mono<UserSessionsStatus> fetchUserSessionsStatus(@NotNull Long userId) {
        try {
            Validator.notNull(userId, "userId");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        Mono<UserSessionsStatus> userSessionsStatusMono =
                sessionRedisClientManager.hgetall(userId, userId)
                        .timeout(operationTimeout, HashedWheelScheduler.getDaemon())
                        .collect(CollectorUtil.toList(8))
                        .flatMap(entries -> handleUserSessionsStatusEntries(userId, entries));
        if (cacheUserSessionsStatus) {
            return userSessionsStatusMono.doOnNext(
                    userSessionsStatus -> userIdToStatusCache.put(userId, userSessionsStatus));
        }
        return userSessionsStatusMono;
    }
@return {@link UserStatus#OFFLINE} instead of MonoEmpty for the offline user
turms-server-common/src/main/java/im/turms/server/common/domain/session/service/UserStatusService.java