private async Task RemoveUserFromRedisAsync(ChatUser user, CancellationToken token = default)
        {
            var rec = new ChatUserRec {
                Id = user.Id, Name = user.Name
            };
            var serialized = JsonSerializer.Serialize(rec);

            await database.SortedSetRemoveAsync(roomKey, serialized);
        }
        private async Task AddUserToRedisAsync(ChatUser user, CancellationToken token = default)
        {
            var rec = new ChatUserRec {
                Id = user.Id, Name = user.Name
            };
            var serialized = JsonSerializer.Serialize(rec);
            var timestamp  = DateTime.Now.Ticks;

            await database.SortedSetAddAsync(roomKey, serialized, timestamp);
        }
        private async Task <bool> TryAddingUserToRedisAsync(ChatUser user, CancellationToken token = default)
        {
            var present = await CountRoomUsers(token);

            if (present >= maxSize)
            {
                return(false);
            }

            var rec = new ChatUserRec {
                Id = user.Id, Name = user.Name
            };
            var serialized = JsonSerializer.Serialize(rec);
            var timestamp  = DateTime.Now.Ticks;

            return(await database.SortedSetAddAsync(roomKey, serialized, timestamp, When.NotExists));
        }