Различные таблицы лидеров для разных уровней с использованием Redis - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в Redis и пытаюсь создать таблицы лидеров для разных уровней в игре (например, в игре может быть 20 уровней, и я хотел бы создать 20 различных таблиц лидеров).

Читая документацию от AWS, кажется, что отсортированные наборы - это путь к go, но мне нужно было бы создать 20 различных экземпляров кеша elasti c?

Или я бы сделал что-то вроде списка лидеров ZADD : 1, ZADD: таблица лидеров: 2, где 1 или 2 соответствует идентификатору игры?

Извинения, если это глупый вопрос, так как это моя первая попытка Redis.

1 Ответ

1 голос
/ 04 мая 2020

Вам не нужно создавать 20 различных экземпляров ElastiCache, вы можете просто использовать один (вам нужно выбрать тип экземпляра в зависимости от размера, сети и c).

Всякий раз, когда вам нужно добавить Для нового пользователя до уровня (обновите счет, если он существует), вам нужно выполнить zadd с ключом уровня, пользователем и счетом (баллами в вашем домене). zadd также поддерживает настройку нескольких пользовательских оценок одновременно.

> ZADD leaderboard:1 154 "user273"
(integer) 1
> ZADD leaderboard:2 12 "user786"
(integer) 1
> ZADD leaderboard:3 221 "user:6817" 912 "user:21233"
(integer) 2

Когда user:123 входит в таблицу лидеров со счетом 15, а затем получает 19, его очки (баллы) будут перезаписаны когда вы выполните zadd.

У вас будет отсортированный набор, заполненный уникальными пользователями с соответствующими баллами. Хитрые части здесь; Если вы собираетесь получить 5 лучших пользователей, вам нужно использовать zrevrange вместо zrange, потому что ваш ранг будет меньше (порядок чисел c), когда ваши очки выше. В этом случае

zrevrange leaderboard:1 0 4 withscores

даст вам 5 лучших пользователей на уровне 1. withscores необязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...