Reducio

❱ 🐇 URL shortener service is written in Scala using Akka-Http and Redis ❰
Alternatives To Reducio
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Golang Url Shortener237
3 years agoApril 21, 202214mitGo
URL Shortener written in Golang using Bolt DB or Redis. Provides features such as Deletion, Expiration, OAuth and is of course Dockerizable.
Myurls194
5 months ago6mitGo
Your Own URL Shortener
Urlsh127
6 months ago14May 04, 2021mitGo
Golang URL shortener and bookmarker service with UI, API, Cache, Hits Counter and forwarder using postgres and redis in backend, bulma in frontend
Delta88
2 years agomitJavaScript
A file uploader + URL shortner written in node for your private cloud
Kurz.go75
6 years agoApril 06, 20121mitHTML
a url shortener made using go and redis
Goshorty74
10 years agoMay 30, 20211Go
A URL shortener in Go with Redis as the backend
Katana70
7 years agomitRuby
ready to go heroku hosted URL shortener based on guillotine
Reducio68
2 months ago84unlicenseScala
❱ 🐇 URL shortener service is written in Scala using Akka-Http and Redis ❰
Beebee56
8 months ago2mitElixir
URL shortener for http://s76.co
Gohort34
9 years agoMay 22, 2021bsd-3-clauseGo
A simple URL shortener written in Go programming language.
Alternatives To Reducio
Select To Compare


Alternative Project Comparisons
Readme

❱ reduc.io ❰

URL shortener service http://reduc.io/wuXaq

Build Status Coverage Status

Tech stack

Alternative solutions

We could use following short code gen also:

substr(base62(md5(url)), 6) = 62 ^ 6 //unique short urls

Commands

Run

Run docker-compose, it will start api, redis and will expose api port to host.

docker-compose up

Sample usage

# Shorten
curl -i http://localhost:9001 -F "url=https://www.amazon.com/Star-Wars-Battlefront-II-Digital/dp/B072JZZ4XD"

# Call shortened url
for ((i=1;i<=100;i++)); do curl -i "http://localhost:9001/SEwuXHhBQw"; done

# Get Stats
curl -i "http://localhost:9001/stats/?url=https://www.amazon.com/Star-Wars-Battlefront-II-Digital/dp/B072JZZ4XD"

# returns: {"callCount":100}

Create executable

sbt packageBin

Test

sbt test

Gatling Simulation

Simulation users count can be set in application.conf in test resources.

# terminal 1
sbt run

# Run simulation in terminal 2
sbt gatling:test gatling:latestReport

Coverage with Report

sbt clean coverage test coverageReport

Improvements

  • Seperate read and write API's
  • Move statistics to different data store and API
  • Add DB support by having write master/replicas and have read replicas
  • Move hit counts to MapReduce job and generate them from the Web Server logs
  • Implement Authentication using JWT authentication protocol with OAuth2 authentication framework
  • API Documentation using swagger or similar
  • Add Host denyList
  • Add Retry policies for Redis calls using Retry or similar one
  • Add Throttling using akka-http-contrib
  • Add Metrics support using akka-http-metrics

z i λ a s a l.

Popular Redis Projects
Popular Url Shortener Projects
Popular Data Storage Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Http
Scala
Redis
Akka
Retry
Url Shortener
Akka Http