Could you please elaborate on the fundamental differences between React and Redux in the context of web development? How do they complement each other, and what specific roles do they play in building a scalable and efficient application? Additionally, could you provide some real-world scenarios where the use of both React and Redux would be advantageous?