Я не привык работать с хранилищами ключей-значений.
Я создаю веб-игру. Моя цель — сопоставить онлайн-пользователей друг с другом. Как только пользователь подключится к Интернету и решит играть, он будет временно добавлен в хранилище данных REDIS (до выхода из системы).
Я добавлю их, используя их ID в качестве ключа и их данные (NAME, GAMETOPLAY, RANKING, STATUS и т. Д.) В виде хэша или набора. Не уверен, какой тип данных еще лучше.
Как мне сопоставить пользователей (то есть записи REDIS) вместе? В основном у меня будут ожидающие пользователи в хранилище данных REDIS, и я хочу просмотреть каждую запись, пока не получу совпадение. Но, очевидно, вы не можете искать в REDIS, так как мне это сделать?
Я не хочу извлекать каждую запись из Redis, просто чтобы проверить ее детали. Это кажется очень дорогим ресурсом. Должен быть лучший способ.
РЕДАКТИРОВАТЬ:
Чтобы быть более точным. Я хочу запросить свои данные на основе нескольких критериев. Видимо, вы можете сделать это, используя отсортированные наборы. Но мне все еще нужно несколько критериев. Некоторые критерии, которые я могу обойти, сохраняя в другой таблице / базе данных (?), Я думаю, но не все.
РЕДАКТИРОВАТЬ 2:
По-видимому, я могу сделать это с помощью многомерных индексов.
Способ поиска REDIS — это сначала создать и поддерживать индексы для ваших запросов.
Допустим, вы добавляете нового пользователя с RANKING X, GAMETOPLAY Y, и вы будете искать пользователей по диапазону рейтинга и точному значению геймплея.
Ваша задача сейчас состоит в том, чтобы создать структуру, которая будет иметь таких пользователей, как отсортированный набор «gametoplay:gametoplayvalue«(ключи = идентификатор_пользователя и баллы = рейтинг)
Другое решение нескольких критериев поиска будет использовать:
http://redis.io/commands/sinter
http://redis.io/commands/sinterstore
Вы поддерживаете наборы, как:
А если вы хотите найти пользователей по нескольким критериям, вы можете использовать sinter для пересечения.
Подвести итог:
Вы можете сохранить временные данные пользователя, добавив префикс к идентификатору.
tmp_ (идентификатор_пользователя)
добавьте tmp_ к user_id для временных деталей.
и просто user_id для постоянных деталей