public Mono<Long> deletePrivateMessageSequenceIds(Set<Long> userIds) {
        if (redisClientManager == null) {
            return PublisherPool.LONG_ZERO;
        }
        Flux<Long> flux = Mono.fromCallable(() -> {
            ByteBuf[] keys = new ByteBuf[userIds.size()];
            int i = 0;
            try {
                for (Long userId : userIds) {
                    ByteBuf buffer = PooledByteBufAllocator.DEFAULT.directBuffer(Long.BYTES);
                    keys[i++] = buffer;
                    buffer.writeLong(userId);
                }
            } catch (Exception e) {
                ReferenceCountUtil.ensureReleased(keys);
                throw e;
            }
            return keys;
        })
                .flatMapMany(keys -> redisClientManager.execute(client -> {
                    ReferenceCountUtil.retain(keys);
                    return client.eval(deletePrivateMessageSequenceIdScript, keys)
                            .doFinally(signalType -> ReferenceCountUtil.release(keys));
                })
                        .doFinally(signalType -> ReferenceCountUtil.release(keys)));
        return MathFlux.sumLong(flux);
    }
Note that if there is an user1, when the sequence ID-related data of their last related user
is deleted, the sequence ID-related data of user1 in Redis will be deleted automatically (the
behavior is expected to save memory), which indicate that calling this method with user1 is
unnecessary, and will return 0 instead of 1.
turms-service/src/main/java/im/turms/service/domain/message/service/MessageService.java