Disco.pics — Бесплатный хостинг изображений с открытым исходным кодом


Обзор моей работы

Я большой поклонник Discord и использую его для общения с друзьями, семьей и товарищами по команде.

Однажды мой друг рассказал мне, как он создал канал, чтобы хранить и организовывать свои изображения в одном месте.
Все вложения, загруженные в discord, автоматически генерируют ссылку. Этими ссылками можно поделиться, но они очень длинные.
Discord имеет очень высокоскоростную сеть доставки контента (CDN), работающую на Cloudflare.

Все это заставило нас задуматься: «Почему бы не создать хостинг изображений, использующий CDN Discord?».

И именно это мы и сделали!
Но это должно было быть ОЧЕНЬ быстро. Мы хотели сделать хороший хостинг изображений, с поддержкой встраивания, API и т.д.

Это означало, что нам придется получать данные из базы данных каждый раз, когда кто-то загружает изображение. Redis был идеальным выбором для нас.

Категория «Представление»:

Причудливые дикие символы!

Обзорное видео

Используемый язык

Typescript

Ссылка на код

discopics / disco.pics

Служба хостинга изображений, использующая CDN discord для хранения изображений

Disco.pics

Быстрый хостинг изображений.

Обзорное видео

Вот короткое видео, которое объясняет проект и то, как он использует Redis:

[Вставьте сюда свое собственное видео, а видео ниже удалите].

Как это работает

Как хранятся данные

Есть две различные схемы, схема User и схема Image.

Для каждого пользователя хранится следующая информация:

  • id: string
  • электронная почта: строка
  • дата_создания: дата
  • номер_токена: номер
  • embed_title: string
  • embed_site_name: string
  • embed_site_url: string
  • embed_colour: string
  • embed_author_name: string
  • embed_desc: string

здесь ID индексируется, поэтому мы можем найти пользователей по их ID.

Схема Image — это информация, которая хранится для каждого изображения:

  • uploaded_by: string
  • slug: строка
  • img_url: строка
  • uploaded_at: дата

Здесь индексируются slug и uploaded_by.

Каждый раз, когда кто-то посещает маршрут /[slug], схема Image запрашивается на наличие изображения с указанным slug.

Затем, используя uploaded_by, информация о вставке запрашивается из схемы User.

Как

Посмотреть на GitHub

Дополнительные ресурсы / информация

Коллабораторы

@yxsh


  • Ознакомьтесь с Redis OM, клиентскими библиотеками для работы с Redis как с многомодельной базой данных.
  • Используйте RedisInsight для визуализации данных в Redis.
  • Подпишитесь на бесплатную базу данных Redis.

Оцените статью
devanswers.ru
Добавить комментарий