title: redis architecture for multiple groups of information
body: <p>Setup:  Imagine an application that stores 3 types of data in redis: <br />
  1. session information<br />
  2. user status (online/offline)<br />
  3. user 3 favorite colors<br />
  <br />
  I would like to ask about the right architecture to set this up.  Should I:<br />
  a. Merely store everything with different keys?  ie: <br />
  a1) Store each session with: key = "session id", value = "session information", <br />a2) Store each status with: key = "user id",  value = "online || offline", <br />a3) Store each favorite color with: key = "user color1 || user color2 || user color3", value = "color name"<br /><br />
  b. Store sessions with different keys, and use sets for status/favorite color? ie:<br />
  b1) Store each session with: key = "session id", value = "session information", <br />
  b2) Create 2 sets online &amp; offline: each online user in 'set online', each offline user in 'set offline'<br />
  b3) Create a 'color set' for each user:  In each set, store the 3 favorite colors.
  <br />
  <br />
  c. Store sessions with different keys, and use lists for status/favorite color?<br />
  c1) Store each session with: key = "session id", value = "session information", <br />
  c2) Create 2 lists online &amp; offline: each online user in 'list online', each offline user in 'list offline'<br />
  c3) Create a 'color list' for each user:  In each list, store the 3 favorite colors.</p>
  
  <p>d. Other option?</p>
  
  <p>I'm concerned mostly with performance.  I want to perform queries on sessions, status, colors so as to make as efficient as possible (assume 5million + users).</p>