В качестве побочной шутки я преподаю технологии разработки веб -сайтов и программного обеспечения для технических рекрутеров с использованием простого английского. Это помогает им в понимании характеристик работы и резюме, и это делает всех нас, технических людей счастливее.
Я запускаю еженедельную рассылку и часто получаю отзывы от рекрутеров по электронной почте или DMS LinkedIn.
Я думал, что могу попытаться собрать обратную связь, используя функцию «Реакции», как и LinkedIn или Facebook. Это не так информативно, как персонализированные сообщения, но это простая функция, которая может побудить больше людей предоставить некоторые общие отзывы.
В любом случае, стоит попробовать, и, как разработчик программного обеспечения, я не могу дождаться, чтобы реализовать его.
Этот урок посвящен реализации функции, которая будет использоваться в реальной жизни в моем проекте.
Планирование
Как и в случае с любой функцией или проектом, мы начинаем с фазы планирования.
Я собираюсь придерживаться ликоподобных реакций, потому что они более подходят для типа контента, который я публикую.
Я буду использовать подобные, проницательные и любопытные реакции и заменим их 👍, 💡 и 🤔 эмодзисами соответственно.
Мой статический сайт построен с Gatsby. Я не использую базу данных Но мне нужен один, чтобы хранить реакцию. Мне нужно решить, какую базу данных использовать.
Я развертываю с NetLify и использую функции для функциональности, связанных с бэкэнд. Это означает, что я иду без сервера. В идеале мне нужна база данных без серверов, чтобы не иметь дело с развертыванием моего собственного DB или переплаты за PAAS с фиксированными планами.
На момент написания этой статьи я использую бесплатный уровень NetLify и могу легко использовать больше функций с платным планом по очень хорошей цене. Использование базы данных по разумной цене было бы идеальным дополнением к моему текущему техническому стеку.
Это задачи:
1. Варианты исследовательской базы данных.
Мне нужно выяснить, какие базы данных без серверов существуют, и выбрать их.
2. Создайте бэкэнд без сервера с функциями для:
- хранение реакций и увеличение/уменьшение количества
- получение реакций по посту i d
3. Создайте компонент «реакции».
Гэтсби основан на React, и я построю простой компонент «реакции».
4. Составьте все это, чтобы сделать мой статический сайт немного динамичным.
Статические веб -сайты могут иметь динамические функции, и это то, что делает их, статические генераторы сайтов столь невероятно удивительны.
В этом уроке я сосредоточусь на первых двух задачах. Реализация компонента «реакции» вы можете проверить в исходный код
Исследовать
Этот второй этап жизненного цикла разработки программного обеспечения (SDLC) называется прототипированием, но я называю это исследованием в этом учебном пособии, потому что я пропущу деталь подтверждения концепции (POC).
Исследования всегда веселые, потому что это дает прекрасную возможность узнать о новых технологиях. Хотя этот процесс интересен, это также может занять много времени, если мы не сделаем наше исследование более конкретным.
SQL и NOSQL являются наиболее распространенными типами баз данных. Выбор не сложно, если мы знаем, какие данные будут храниться. Давайте быстро посмотрим, какая структура данных у нас будет.
Каждый Пост имеет набор реакций И нам нужно считать те реакции Анкет
Поскольку я просто хочу получить представление о том, как люди реагируют на мои посты, я не потребую, чтобы они вошли или ограничивали типы реакций.
Основываясь на вышеизложенном, наша структура данных может выглядеть следующим образом для поста с 3 лайками, 12 проницательными и 7 любопытных реакциями: {"like": 3, "проницательный": 12, "любопытный": 7}
База данных NOSQL выглядит как хороший выбор для хранения и манипулирования структурой данных, такой как вышеуказанное.
Я сразу подумал о Mongodb и Redis. Однако, основываясь на том, как мы будем манипулировать данными, а именно сохранять их один раз, а затем увеличить или уменьшить определенные значения, я решаю в пользу Redis.
Причина в том, что Redis имеет встроенные и оптимизированные команды, чтобы поддержать то, что нам нужно.
Кроме того, я нашел базу данных без серверов Redis Upstash что выглядит просто и имеет разумные цены, включая бесплатный план. Я люблю начинать бесплатно и платить, когда я масштабируюсь.
Обратите внимание, что мы используем Redis в качестве Основная база данных Анкет Redis можно настроить для записи данных на диск, который обеспечивает степень Безопасность данных сравнимо с тем, что предлагает PostgreSQL.
Redis решает гораздо более широкий диапазон проблем, чем просто кэширование в памяти, и может использоваться либо в качестве основной базы данных, либо в качестве дополнительной базы данных для решения проблем, с которыми борются другие базы данных.
Мне нравится этот апташ позволяет настойчивость По умолчанию хранит данные как в памяти, так и на диске. Это устраняет головную боль настройки вещей, которые были бы накладными расходами для такой задачи, как эта. Вот почему я всегда использую Serverless и PaaS, когда это возможно.
Подводя итог, позвольте мне поделиться с вами интересным Бесплатная электронная книга называется «Redis in Action», упакованная ценной информацией и использованием Redis.
БЕРЕВНАЯ БЕЗПЕКТА
Я буду использовать функции NetLify без сервера с узлом вместо создания собственного бэкэнда. Вы можете использовать любую бэкэнд -архитектуру.
Самый простой способ соединить Redis с Upstash – это использовать Redis-client Как описано Здесь Анкет
Перво -наперво, нам нужно создать базу данных без серверов Redis после этого Руководство по началу работы Анкет
Пожалуйста, обратите внимание, что я оставляю Сильный режим согласованности , потому что возможная последовательность подходит для моей задачи.
Это схема для названия ключей: post: {id}: {реакция}
- post: {id}: как ->
Пост: 856f9d0a: нравится - post: {id}: проницательный ->
Пост: 856f9d0a: проницательный - Post: {id}: любопытный ->
Пост: 856f9d0a: любопытный
Мы могли бы пойти с самым основным видом стоимости Redis, известного как Строки Анкет Но мы пойдем с хэш Потому что мы хотим хранить объекты как ценность, и это целесообразно Используйте хэши, когда это возможно Анкет
Вот как мы делаем это для данного идентификатора поста:
- Чтобы увеличить реакцию на 1, например, «как», мы будем использовать Hincrby командование Если ключ не существует, он создаст ключ и установит свое значение 0 до увеличения. Если ключ существует, он просто увеличит значение, которое мы предоставляем. Это позволяет нам повторно использовать эту функцию как для создания, так и для обновления реакций.
Hincrby Post: 856f9d0a: реакции, такие как 1
Вот реализация
Если бы нам пришлось уменьшить реакции для случаев, когда реакция удаляется или изменяется, мы просто передали бы значение, которое будет увеличено на отрицательное число: -1
- Чтобы прочитать реакции для идентификатора сообщения, мы будем использовать Hgetall Команда, которая возвращает пары клавишных значений:
Hgetall Post: 856f9d0a: реакции -> //вернется {"like": "3", "проницательный": "1", "любопытный": "2"}
Вот реализация
С таким подходом, зная идентификатор поста, мы можем эффективно установить, обновить и получить реакции для поста с смехотворно небольшим количеством кода.
Пост -идентификаторы не короткие, но мы будем использовать их для ключей именования, потому что они не приведут к заметному увеличению использования памяти в нашем случае.
Но вы всегда должны помнить, что наряду с чтением схемой именования ключей вам необходимо контролировать длину ключей. Длинные клавиши могут использовать больше памяти и даже вызывать последствия для производительности, как описано в Redis Keys раздел.
Не по теме
Несмотря на то, что это не связано с этим уроком, я знаю, что позже я захочу показать самые популярные посты, основанные на реакциях.
Чтобы получить посты с наибольшим количеством лайков, проницательных и любопытных реакций, нам нужно отслеживать их, используя отсортированный набор .
Например, именно так мы храним пост, который получил такую же реакцию: Zincrby Реакция: как 1 Пост: 856F9D0A
И вот как мы получаем самые любимые 5 постов: Zrevrangebyscore Реакция: как +inf -Inf с ограничениями, предел 0 5
Я предоставлю более подробную информацию и рабочую реализацию в одном из моих следующих сообщений.
Всегда полезно разработать систему, учитывая все известные будущие требования и выбрать технологии, которые будут поддерживать их в будущем.
Вот работающая реализация на моем Веб -сайт Анкет Выберите любой Пост И вы найдете реакции внизу. Исходный код, который вы можете найти здесь
Вывод
Если вы все еще воспринимаете Redis как кэш в памяти, будьте готовы, потому что у меня есть больше постов, которые появляются в этой обложке, поддерживаемых этой удивительной базой данных.
Следующий пост будет о том, как я построил доску вопросов и ответов для задания и разжигания самых интересных вопросов с помощью Redis.
Следуйте за большим!
Оригинал: “https://dev.to/sandorturanszky/how-to-create-linkedin-like-reactions-with-serverless-redis-4cad”