Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When to use Redis instead of MySQL for PHP applications?

Tags:

php

mysql

redis

I've been looking at Redis. It looks very interesting. But from a practical perspective, in what cases would it be better to use Redis over MySQL?

like image 692
james.bcn Avatar asked Oct 19 '10 08:10

james.bcn


People also ask

When use Redis vs MySQL?

While MySQL supports the XML data format, Redis does not. When concerning indexes, both allow them. However, MySQL supports secondary indexes without any restrictions while Redis only supports secondary indexes with the RediSearch module.

When would you use Redis as a database?

Redis can be used with streaming solutions such as Apache Kafka and Amazon Kinesis as an in-memory data store to ingest, process, and analyze real-time data with sub-millisecond latency. Redis is an ideal choice for real-time analytics use cases such as social media analytics, ad targeting, personalization, and IoT.

When should you not use Redis?

Large amount of data: Redis does not fit as a Database if we need to store very large data sets, or expect our data to grow very fast.


2 Answers

Ignoring the whole NoSQL vs SQL debate, I think the best approach is to combine them. In other words, use MySQL for for some parts of the system (complex lookups, transactions) and redis for others (performance, counters etc).

In my experience, performance issues related to scalability (lots of users...) eventually forces you to add some kind of cache to remove load from the MySQL server and redis/memcached is very good at that.

like image 156
Martin Wickman Avatar answered Sep 20 '22 18:09

Martin Wickman


I am no Redis expert, but from what I've gathered, both are pretty different. Redis :

  • Is not a relational database (no fancy data organisation)
  • Stores everything in memory (faster, less space, probably less safe in case of a crash)
  • Is less widely deployed on various webhosts (if you're not hosting yourself)

I think you might want to use Redis for when you have a small-ish quantity of data that doesn't need the relational structure that MySQL offers, and requires fast access. This could for example be session data in a dynamic web interface that needs to be accessed often and fast.

Redis could also be used as a cache for some MySQL data which is going to be accessed very often (ie: load it when a user logs in).

I think you're asking the question the wrong way around, you should ask yourself which one is more suited to an application, rather than which application is suited to a system ;)

like image 36
Thomas Avatar answered Sep 20 '22 18:09

Thomas