Redis ဆိုတာကတော့ NoSQL Database နောက်တစ်ခုပါပဲ။ သူက Key Value storage ကို အသုံးပြုပါတယ်။ ကျွန်တော် How did I learn ? မှာ ရေးခဲ့သလို NoSQL နဲ့ PHP မဟုတ်တဲ့ အခြား language တစ်ခုကို လေ့လာချင်တာကြောင့် project တစ်ခု ဖန်တီးထားလိုက်တယ်။ Language ကိုတော့ Node နဲ့ သုံးမယ်။ Database ကို ဘာသုံးမလဲ စဉ်းစားတဲ့ အခါမှာ Mogodb နဲ့ Redis ကို သွား တွေ့တယ်။ Mongodb အကြောင်းကိုတော့ ကျွန်တော် ဒီမှာ ရေးဘူးပါတယ်။ နောက်ပြီးတော့ Cassandra ကို လည်း သုံးဖူးတယ်။ သူက setup လုပ်ရတာ နည်းနည်း ခက်တယ်။ နောက်ပြီး java သုံးထားတာကို သဘောမကျတဲ့ အတွက်ကြောင့် cassandra ကို ထပ် မသုံးပါဘူး။ ( java ကို အလိုလို နေရင်း ဘာကြောင့် မကြိုက်မှန်းကို မသိပါဘူး ) ဒါကြောင့် Redis ကို စမ်းကြည့်မယ်ဆိုပြီး ဆုံးဖြတ်လိုက်တာ။ မစမ်းခင် ဘာ အရင် ရှာလဲဆိုတော့ Node.js driver ရှိမရှိပဲ။ မရှိရင်တော့ မလေ့လာဘူးလို့ စဉ်းစားထားပေမယ့် Node.js driver အသင့် ရှိနေတာကို တွေ့ပါတယ်။ အခုနောက်ပိုင်းမှာ Node.js driver က တော်တော် များများ ရှိလာကြတယ်။ Node.js က c နဲ့ module တွေ ရေးလို့ ရတဲ့အတွက် လက်ရှိရှိနေတဲ့ driver ကနေ Node.js ကို ပြောင်းဖို့ လွယ်တာကြောင့်လည်း ပါမှာပါ။
Redis ကို ဘယ်က စလေ့လာသလဲဆိုတော့ သူရဲ့ website redis.io ကနေပါ။ အခုနောက်ပိုင်း technology တွေက လေ့လာဖို့ အတွက် သူတို့ရဲ့ website မှာ ပြည့်ပြည့်စုံစုံရေးထားတတ်ပါတယ်။ အခုနောက်ပိုင်းမှာ အများအားဖြင့် ebook တွေ ရှာဖတ်နေစရာမလိုတော့ပဲနဲ့ သူ့ရဲ့ documentation ကို ဖတ်ပြီး လေ့လာလို့ရပါတယ်။ သို့ပေမယ့် documentation က ဘာမှ မသိသေးရင်တော့ ဖတ်ရတာ နည်းနည်း ခက်နေတတ်တယ်။ အခုမှသာ iOS Dev အတွက် apple doc ဖတ်တတ်လာတယ်။ ebook တွေတောင် မလိုတော့ပဲ iOS doc ကနေ ပဲ ဖတ်ပြီး လုပ်ဖြစ်လာတယ်။ အဲလိုပဲ Redis က အသုံးပြုပုံအတွက် documentation ပေးထားပါတယ်။
Redis ရဲ့ idea လေးက မိုက်ပါတယ်။ Key နဲ့ value ၂ ခုပါပဲရှိတယ်။ ဘာနဲ့ တူသလဲဆိုတော့ Array လိုပေါ့။ အခန်း နာမည်နဲ့ value ။ ဒါပဲ ရှိတယ်။ အကုန်လုံးကို အဲဒီမှာ သွားသိမ်းပါတယ်။ Redis အကြောင်းကို ခြုံပြီးတော့ Redis 101 မှာ ရှင်းပြထားပါတယ်။ Redis သိမ်းတဲ့ ပုံကို အောက်က example လေးကို ကြည့်လိုက်ပါ။
Keys Values user:1:name Joe user:2:name fred user:1:follows {2,3,4} <-- Set user:2:follows {1} user:1:posts [2,3,4] <-- List user:2:posts [1,5,6] post:1:content "Hello World" post:2:content "Blah Blah" post:3:content "Foo bar"
အရမ်းရိုးပါတယ်။ key နဲ့ value ပဲ သိမ်းလို့ရတဲ့ အတွက် user id ကို key name အနေနဲ့ သိမ်းသွားတာ တွေ့ရမှာပါ။ Values မှာတော့ strings, hashes, lists, sets and sorted sets တွေ သိမ်းလို့ရပါတယ်။ သိမ်းတာတွေ ပြန်ဖတ်တာတွေက အရမ်းကို မြန်ပါတယ်။ ဘာကြောင့် မြန်ရသလဲဆိုတော့ သူက data တွေကို memory ပေါ်မှာ သွားသိမ်းလို့ပါပဲ။ ပုံမှန်အားဖြင့် data တွေကို hard disk ထဲမှာ သွားသိမ်းတဲ့ အခါမှာ read နဲ့ write က memory ပေါ်မှာ read , write ထက် အချိန်ပိုပေးရပါတယ်။ ဒါကြောင့် သူက memory ပေါ်မှာ သိမ်းပြီး လိုအပ်ရင် backup လုပ်ထားလို့ရပါတယ်။ memory ပေါ်မှာ ဖြစ်တဲ့ အတွက် Redis server ကို ပိတ်ပြီး ပြန်ဖွင့်လိုက်ရင် (restart) ချလိုက်ရင် ရှိတဲ့ data တွေ ပျောက်ကုန်ပါလိမ့်မယ်။
Redis အကြောင်းကို သိချင်ရင် သူ့မှာ ပါတဲ့ data type တွေကို ဒီမှာ လေ့လာနိုင်ပါတယ်။ နောက်ပြီးတော့ PHP သမားဆိုရင် PHP sample application , twitter clone လေးကို ဖတ်ကြည့်ပါ။ စိတ်ဝင်စားဖို့ တော်တော်ကောင်းပါတယ်။ Twitter လိုမျိုး application ,facebook လိုမျိုး application တွေအတွက် redis က တော်တော်ကို အဆင်ပြေပေမယ့် Memory ကောင်းကောင်းတော့ လိုလိမ့်မယ်။ သူရဲ့ read , write နှုန်းက အရမ်းကို မြန်တယ်။ သို့ပေမယ့် ကျွန်တော် သုံးမယ့် server က memory 256 MB သို့မဟုတ် 512 MB ဖြစ်တဲ့အတွက်ကြောင့် Redis ထက် Mongodb ကို စိတ်ဝင်စားပြီး mongodb ကို ပြန်လေ့လာဖြစ်သွားပါတယ်ဗျာ။ တကယ်လို့ twitter လိုမျိုး application ရေးမယ်ဆိုရင် real time data တွေရေးမယ်ဆိုရင်တော့ redis က တော်တော် အသုံးဝင်ပါတယ်။
NoSQL တွေရဲ့ နှိုင်းယှဉ်ချက်တွေကို ဒီမှာ ဖတ်နိုင်ပါတယ်။
Leave a Reply