Настольная школа:
3 поля:
Сид (идентификатор школы)
s_name(название_школы)
s_type (тип школы)
Пользователь стола:
2 поля:
user_id(идентификатор пользователя)
имя(имя пользователя)
Таблица school_user_relationship:
3 поля:
избавиться(идентификатор отношений)
Сид (идентификатор школы)
user_id(идентификатор пользователя)
Как использовать Redis для оптимизации следующих двух требований?
Структура данных: хэш? набор? битсет?
Если не использовать какую-либо оптимизацию, время запроса немного велико. Поэтому оптимизация, скорее всего, закончится. Но у меня пока нет никаких планов.
Ваш вопрос звучит так, будто у вас есть подход реляционной базы данных (SQL) к вашей проблеме. Redis, с другой стороны, по своей сути является хранилищем значений ключа или ассоциативным массивом. Комплект разработчика Java предоставляет тип данных HashMap в качестве хранилища ключ-значение. Python предоставляет словари, а Javascript предоставляет объекты со свойствами. php и perl предоставляют ассоциативные массивы
Давайте просто назовем структуру данных словарем (общим, а не python). Во всех этих структурах данных и в Redis вы храните, скажем, свои пользовательские данные, выполняя что-то вроде этого псевдокода, чтобы поместить имя вашего пользователя в словарь имен пользователей. ( <--
— оператор присваивания псевдокода.)
usernames[user_id] <-- name
Затем, позже, если вы знаете идентификатор пользователя, вы можете получить имя так
name <-- usernames[user_id]
Но если вы знаете имя пользователя и хотите получить его идентификатор, вам нужна отдельная структура данных.
userids[name] <-- user_id
и сделайте это, чтобы восстановить идентификатор по имени.
user_id <-- userids[name]
В SQL вы могли бы сказать SELECT user_id FROM users WHERE name = whatever
, но словари так не работают (во всяком случае, неэффективно).
Словари могут иметь словари (HASH в Redis) и наборы (SET в Redis) в качестве значений. Таким образом, вы можете иметь словарь с одной записью для каждой школы, которая представляет собой набор идентификаторов пользователей для людей, зачисленных в эту школу.
Хороший способ приблизиться к эффективному дизайну Redis — решить, как бы вы сделали это на обычном языке программирования со словарями.
Спасибо за ваш ответ! Я уже решил проблему.