CHALLENGES

7 frequent challenges with Redis/MongoDB

Using MongoDB™ with Redis can enhance performance, but the combination adds significant complexity and might introduce more challenges. Because Redis lacks some features, it often needs additional modules that further complicate the setup.

FEATURES

Key features of Couchbase vs. Redis + MongoDB

  • What’s included
  • Built-in cache
  • JSON flexibility
  • Automatic mobile sync and peer-to-peer sync
  • Masterless architecture
  • Full SQL querying
  • Multi-master geographic replication
  • Analytics
  • Automatic sharding/partitioning
  • Database logic
  • Built-in full-text search
  • Data structures (queue, set, etc.)
  • Multi-dimensional scaling
  • Couchbase
  • Eventing, UDFs
  • Redis + MongoDB
  • Redis only
  • Requires RedisJSON module
  • MongoDB only
  • Redis is Lua only
CUSTOMERS

Success stories: Couchbase over MongoDB and Redis

  • "With less than half the servers, we can increase performance and gain a much better scalable architecture."
    Amir Ish-Shalom, Sr. Director of Operations, Viber
    15 billion call and message events/day
    60% reduction in total servers
  • “The most important thing is the multi-dimensional scaling. Having a few nodes for a specific use case is very powerful.”
    Jay Duraisamy, SVP, USIS Engineering Leader, Equifax
    300+ million documents in 40 mins
    1.5 billion constantly changing records
  • “None of the other solutions came even close to Couchbase’s broad enterprise capabilities.”
    Aviram Agmon, CTO, Maccabi Health Care
    2.3 2.3 million customers on a single app
    0 downtime for thousands of daily connections
CODE SNIPPET

Couchbase's SQL++ and single API excels over Redis/MongoDB


// scope/collection allow for more flexible data organization
const bucket = cluster.bucket('accounts-receivable');
const scope = bucket.scope('tenant1');
const collection = scope.collection('invoices');
const result = await collection.get('key');

// Redis lacks scope and collection capability
const redisClient = redis.createClient({ ... });
redisClient.connect();
const value = await redisClient.get('key');


/* equivalent to the Mongo example */
SELECT SUM(value * volume) AS val, symbol
FROM   db.stocks
WHERE  symbol IN ( "AAPL", "GOOG" ) AND value > 0
GROUP  BY symbol
ORDER  BY val DESC, symbol ASC



// equivalent to the SQL++ example
db.stocks.aggregate([
	 { "$match": {
	 	 "$and": [
	 	 	 {"symbol": {
	 	 	 	 "$in": [
	 	 	 	 "AAPL",
	 	 	 	 "GOOG"]}},
	 	 	 { "value": {
	 	 	 "$gt": 0 }}]}},
	 { "$group": {
	 	 "_id": {
	 	 	 "symbol": "$symbol" },
	 	 "sum(value * volume)": {
	 	 	 "$sum": {
	 	 	 	 "$multiply": [
	 	 	 	 	 "$value",
	 	 	 	 	 "$volume"]}}}},
	 { "$project": {
	 	 "_id": 0,
	 	 "sum(value * volume)": "$sum(value * volume)",
	 	 "symbol": "$_id.symbol"}}
	 { "$sort": {
	 	 "sum(value * volume)": -1,
	 	 "symbol": 1 }}]})


// Redis lacks a complex query language like SQL


DBaaS performance report

See how Redis and MongoDB Atlas compare to Couchbase Capella™.

Start building

Check out our developer portal to explore NoSQL, browse resources, and get started with tutorials.

Develop now
Try Capella

Get hands-on with Couchbase in just a few clicks. Capella DBaaS is the easiest and fastest way to get started.

Try free
Join a free Capella Test-Drive

Kick off your Couchbase Certification journey in 90 minutes with a dedicated instructor.

Get started