5 comments

[ 2.7 ms ] story [ 23.8 ms ] thread
Great post.

I see you've chosen redis over other NoSQL variants. Does it give you a certain advantage in this scenario?

we've used redis for our scheduled jobs and does a pretty good job. we still do use mongoDB for our 'main' data. the reason for the redis option was because we liked the 'kue' - https://github.com/learnboost/kue
Thanks rcruz. Redis has a few advantages over other NoSQL databases

1. Redis is a Disk-backed in-memory database so its blazing fast. 2. Redis also has an easy pub/sub built in so you can easily use it communicate between servers in your nodejs cluser. 3. Kue is an amazing open source priority queue which uses it as a backend by default.

For small datasets that don't require you to query within your json, its an amazing database.

Given that you're already using Redis with Kue, why not use Redis in place of MongoDB?

Additionally, why have you chosen to use a key-value store initially instead of a traditional SQL store?

MongoDB has a lot of advantages over Redis

1. Retains some friendly properties of SQL. (Query, index) so its easier to work with. Queries are javascript expressions so it fits in great with our Stack. 2. Master/slave replication (auto failover with replica sets), Sharding built-in, Easier horizontal scaling than Redis. 3. In-place updates, means you only need update one part of the document. 4. geospatial indexing, if you use geospatial data this can be very powerful 5. Data center awareness

You can do everything with Redis as well but we found that Mongo was easier to work with.