2012-02-17 1 views
1

Я использую отсортированные множества следующим образом.Возможно ли получить членов с одинаковым счетом в отсортированном наборе [Redis]?

У меня есть нормальный набор, называемый «доступным: номера», который содержит номера телефонов. Теперь скажите, что пользователь подписывается, поэтому у нас есть идентификатор пользователя, называемый «uid». Этот новый пользователь выделил номер из набора «Доступные номера». У меня есть пользовательский хеш, где я мог бы хранить это сопоставление user-> alloted_number. Проблема в том, как хранить несколько номеров, связанных с одним и тем же пользователем?

Мне интересно, можно ли здесь использовать отсортированный набор? Я мог бы POP число из «доступных: числа» и добавить его в отсортированный набор, называемый «used: numbers», с оценкой, которая является «uid» пользователя. Поскольку оценка не обязательно должна быть уникальной, и все участники уникальны, это кажется идеальным решением. Что я хочу знать, так это то, что можно получить всех участников сортированного набора с учетом оценки? Таким образом, я мог бы дергать все числа, принадлежащие к определенному «UID» Или я должен просто забыть о отсортированном наборе для этой цели

Благодарности

ответ

2

Могу ли я предложить вам сохранить набор для каждого пользователя вместо этого? Итак:

available:numbers = {1, 2, 3, 4} 

user:numbers:UID1 = {5, 6} 
user:numbers:UID2 = {7} 

Кажется более управляемым, для меня. Это, как говорится, вы действительно можете получить все члены отсортированный установить по баллам, см ZRANGEBYSCORE:

zrangebyscore user:numbers UID UID 

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