Redis - получение пользовательских лайков для нескольких сообщений за один звонок - PullRequest
0 голосов
/ 07 марта 2019

Это не что-то новое, но не в состоянии выбрать лучший подход для этого.

Это что-то похожее на стену в фейсбуке с лайками. Если зарегистрированному пользователю уже понравилась запись, покажите кнопку «Нравится» зеленым цветом или покажите ее серым цветом.

Вот два подхода, о которых я сейчас думаю

Для 40 сообщений, которые я показываю пользователю в одном представлении, получите Post_ids из 40 сообщений, а затем

1) Если я сохранил лайки в SET, используя что-то вроде

post # id: лайки userid1 userid2

Я могу написать скрипт Lua для запуска ISMEMBER для указанных выше 40 post_ids и получить результат для пользователя

2) Если я храню лайки в Hash, используя что-то вроде

user # id: лайки post_Id1 1 post_id2 1 ....

Здесь я сохраняю понравившийся post_id в качестве ключа в пользовательском хэш-наборе, а значением является какое-то фиктивное значение. При таком подходе теперь я могу теперь использовать HMGET user#id:likes post_id1 post_id28 ..., чтобы увидеть, какие сообщения понравились пользователю в одной команде.

Могу ли я узнать, есть ли проблемы со вторым подходом? Это выглядит просто и легко. Также из этого документа https://redis.io/topics/memory-optimization это говорит

Используйте хэши, когда это возможно

Маленькие хэши закодированы в очень маленьком пространстве, поэтому вы должны попробовать представление ваших данных с использованием хэшей каждый раз, когда это возможно. За экземпляр, если у вас есть объекты, представляющие пользователей в веб-приложении, вместо использования разных ключей для имени, фамилии, электронной почты, пароля, используйте один хеш со всеми обязательными полями.

Если вы хотите узнать больше об этом, прочитайте следующий раздел.

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