В redis, как получить ключи в порядке убывания на основе порядка вставки? - PullRequest
1 голос
/ 11 января 2020

Я реализую фид для социальной сети, в котором сначала должен быть обслужен только что загруженный пост и т. Д. Я использую хэши постов в качестве ключей, а посты в качестве значений. Мне нужны посты в «новейшем первом порядке». Как сделай это? Моя идея состоит в том, чтобы

  1. Сохранить запись и метку времени с ключом ha sh
  2. Получить все ключи и метки времени
  3. Сортировать метки времени в порядке убывания
  4. Затем используйте соответствующие ключи, чтобы получить последние изображения

Вопрос1: Но такой подход не годится. Как это сделать? РЕДАКТИРОВАТЬ: Вопрос 2: Скажите, пожалуйста, какой алгоритм вы используете для подачи в фид. Если фид является общим для всех пользователей по принципу «сначала новее», как его реализовать? Это мой первый раз в бэкэнде. Пожалуйста, если вопрос тупой. Спасибо.

1 Ответ

1 голос
/ 11 января 2020

Вот три варианта для вас:

Использовать отсортированный набор, используя отметку времени в качестве балла и post-ha sh в качестве значения. Post-ha sh также является ключом в ha sh, где хранятся фактические сообщения. Задействованные команды: ZADD, HSET, ZREVRANGEBYSCORE, HGET.

Использовать отсортированный набор, используя метку времени в качестве балла, и запись с метаданными в качестве значения. Убедитесь, что «сообщение с метаданными» является уникальным, вы можете включить отметку времени и пользователя для достижения этой цели. Это будет иметь лучшую производительность, но сделает ее немного сложнее, если вам нужно найти определенный пост c. Включенные команды: ZADD, ZREVRANGEBYSCORE, ZRANGEBYSCORE.

Использовать потоки Redis. Если вам нужен единый порядок вставки независимо от времени клиента, Redis может установить для вас временную метку. Однако записи потоков не могут быть изменены, поэтому пользователи не могут редактировать сообщения или каждый раз, когда они редактируют сообщение, оно отображается как новое. Включенные команды: XADD, XREVRANGE, XDEL.

См .:

...