Should I use Redis or Neo4J for the following use case?
Neo4J is a graph database, which is good for multiple-hops relation search. Say, you want to get the top N posts of A's brother's friend's sister... AFAIK, it's a standalone instance, you CANNOT partition your data on several nodes. Otherwise, the relation between two person might cross machines.
Redis is a key-value store, which is good for searching by key. Say you want to get the friend list of A, or get the top N list of A. You can have a Redis cluster to distribute your data on several machines.
Which is better? It depends on your scenario. It seems that you don't need multiple-hops relation search. So Redis might be better.
You can have a SET to save the friend list of each person. and have a LIST to save the post ids of each person. When you need show posts for user A, call SMEMBERS or SSCAN to get the friend list, and then call LRANGE for each friend to get the top N post ids.
I am building a social network where each user has 3 different profiles - Profile 1, Profile 2 and Profile 3.
This is my use case:
User A follows Users B, C and D in Profile 1. User A follows Users C, F and G in Profile 2. User C follows Users A and E in profile 3.
Another question is that any user on each of these profiles would need to see the latest or (say top N) posts of the users they are following on their respective profiles (whether it is profile 1, 2 or 3).
How can we best store the above information?
Context: 
I am c using Django framework and a Postgres DB to store user’s profile information. User’s posts are being stored on and retrieved from a Cloud CDN.
Which is the best way to go implementing these use cases i.e. the choice of technologies to best suit this scenario? Scalability is an other important factor that comes into play here.