Началось с того, что я решил попробовать Redis в каком-нить проекте, а поскольку давно планировал сделать собственную сокращалку ссылок, то решил именно ее и написать. Связка NodeJS + Redis вообще показалась наиболее легко реализуемой. Закончилось тем что помимо Redis написал еще и реализацию для MongoDB.

Не буду вдаваться в подробности сравнения MongoDB и Redis, на эту тему итак уже написано куча статей (Comparing MongoDB And Redis Part 1 и Part 2. Для реализации сокращалки Redis’а хватает за глаза, он вообще более дружественен и прост в реализации к такого рода задачам.

Скачать мой Node Url Shortener можно на Github.

Для установки надо подтянуть дополнительные пакеты из npm. Прежде всего это ExpressJS, а также пакет для работы с Redis или MongoDB.

git clone https://github.com/dotzero/node-url-shortener nus
cd nus
npm install

Далее надо отредактировать файл ./config.js и запустить app.js через NodeJS. Планирую пользовать исключительно через API, поэтому с веб-интерфейсом особо не заморачивался. Реализация API почти такая же как у goo.gl.

Для сокращения ссылок:

GET /api/v1/shorten/?long_url=http://www.google.com

JSON ответ

{
  status_code: 200
  status_txt: "OK"
  hash: "Mw"
  url: "http://localhost/Mw"
  long_url: "http://www.google.com"
}

И для разворачивания коротких ссылок

GET /api/v1/expand/?short_url=http://localhost/Mw