Suppose my database table structure is like this
id name college address
1 xxx nnn xn
2 yyy nnm yn
3 zzz nnz zn
Redis, like other NoSQL datastores, has different requirements based on what you are going to be doing.
Redis has several data structures that could be useful depending on your need. For example, given your desire for a
select * from student where name = 'xxx' you could use a Redis
redis 127.0.0.1:6379> hmset xxx id 1 college nnn address xn OK redis 127.0.0.1:6379> hgetall xxx 1) "id" 2) "1" 3) "college" 4) "nnn" 5) "address" 6) "xn"
If you have other queries though, like you want to do the same thing but select on
where college = 'xn' then you are going to have to denormalize your data. Denormalization is usually a bad thing in SQL, but in NoSQL it is very common.
If your primary query will be against the name, but you may need to query against the college, then you might do something like adding a
set in addition to the hashes.
redis 127.0.0.1:6379> sadd college.xn xxx (integer) 1 redis 127.0.0.1:6379> smembers college.xn 1) "xxx"
With your data structured like this, if you wanted to find all information for names going to college xn, you would first select the
set, then select each
hash based on the name returned in the
Your requirements will generally drive the design and the structures you use.