Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Convert SQL table into Redis Data

Hi I am new to redis and want some help over here. I am using java and sql server 2008 and redis server. To interact with redis I am using jedis api for java. I know that redis is used to store key value based things. Every key has values.

Problem Background:

I have a table names "user" which stores data like id, name, email, age, country. This is schema of sql table. Now this table have some rows(means some data as well). Now here my primary key is id and its just for DB use Its of no use for me in application.

Now in sql I can insert new row, can update a row, can search for any user, can delete a user.

I want to store this tables data into redis. Then I want to perform similar operations on redis as well, like search, insert, delete. But if I have a good design on "Storing this info in DB and Redis" then these operations will be carried out simply. Remember I can have multiple tables as well. So should store data in redis on basis of table.

My Problem

Any design or info you can advise me that how I can convert DB data to Redis and perform all operations. I am asking this because I know Facebook is also using redis to store data. Then how they are storing data.

Any help would be very appreciative.

like image 721
Mr37037 Avatar asked Sep 12 '14 14:09

Mr37037


1 Answers

This is a very hard question to answer as there are multiple ways you could do.

The best way in my opinion would be use hashes. This is basically a nested a nested key-value type. So your key would match to the hash so you can store username, password, etc.

One problem is indexing, you would need to have an ID stored in the key. For example each user would have to have a key like: USER:21414

The second thing unless you want to look at commands like KEYS or SCAN you are going to have to maintain your own list of users to iterate, only if you need to do that. For this you will need to look at lists or sorted sets.

To be honest there is no true answer to this question, SQL style data does not map to key-value's in any real way. You usually have to do a lot more work yourself.

I would suggest reading as much as you can and would start here http://redis.io/commands and here http://redis.io/documentation.

I have no experience using Jedis so I can't help on that side. If you want an example I have an open-source social networking site which uses Redis as it's sole data store. You can take a look at the code to get some ideas https://github.com/pjuu/pjuu/blob/master/pjuu/auth/backend.py. It uses Python but Redis is such an easy thing to use everywhere there will not be that much to difference.

Edit: My site above no longer solely uses Redis. An older branch will need to be checked such as 0.4 or 0.3 :)

like image 194
Joe Doherty Avatar answered Oct 19 '22 09:10

Joe Doherty