"মূলত মার্চ 2015 এ ObjectRocket.com/blog এ প্রকাশিত"
Redis® একটি দুর্দান্ত টুল, এবং প্রযুক্তি সম্প্রদায় এটি পছন্দ করে! ইন্ডাস্ট্রি-স্ট্যান্ডার্ড ইন-মেমরি ডেটা স্টোরেজ হওয়া Antirezto থেকে একটি ছোট ব্যক্তিগত প্রকল্প হওয়া থেকে এটি অনেক দূর এগিয়েছে। এর সাথে Redis সঠিকভাবে ব্যবহার করার জন্য সেরা অনুশীলনের একটি সেট আসে। এই নিবন্ধে, আমরা Redis সঠিকভাবে ব্যবহার করার জন্য দশটি দ্রুত টিপস অন্বেষণ করি৷
৷1. কী ব্যবহার করা বন্ধ করুন
ঠিক আছে, তাই হয়তো আপনাকে চিৎকার করা এই নিবন্ধটি শুরু করার একটি দুর্দান্ত উপায় নয়। তবে এটি সম্ভবত সবচেয়ে গুরুত্বপূর্ণ পয়েন্ট। খুব প্রায়ই, আমি একটি রেডিস দেখি উদাহরণস্বরূপ, একটি দ্রুত commandstats
টানুন , এবং একটি উজ্জ্বল কী দেখুন আমার দিকে ফিরে তাকাচ্ছে সমস্ত ন্যায্যতার দিক থেকে, একটি প্রোগ্রামগত দৃষ্টিকোণ থেকে আসা, এটির অনুরূপ সিউডোকোড থাকা বোধগম্য হবে:
for key in 'keys *':
doAllTheThings()
কিন্তু যখন আপনার কাছে 13 মিলিয়ন কী আছে, তখন জিনিসগুলি ধীর হয়ে যাবে। KEYS থেকে হল O(n) যেখানে n কী রিটার্ন করা সংখ্যা, আপনার জটিলতা ডাটাবেসের আকার দ্বারা আবদ্ধ। এছাড়াও, এই পুরো অপারেশন চলাকালীন, আপনি আপনার উদাহরণের বিরুদ্ধে অন্য কিছু চালাতে পারবেন না।
একটি বিকল্প হিসাবে, SCAN পরীক্ষা করে দেখুন, যা আপনাকে আপনার ডাটাবেসের মাধ্যমে বৃদ্ধির পরিবর্তে স্ক্যান করতে দেয়। এটি একটি ইটারেটারে কাজ করে যাতে আপনি থামতে এবং আপনার উপযুক্ত মনে হলে যেতে পারেন।
2. রেডিসকে কি ধীর করছে তা খুঁজে বের করুন
যেহেতু Redis-এর লগের সবচেয়ে বেশি শব্দ নেই, তাই আপনার উদাহরণের ভিতরে ঠিক কী ঘটছে তা ট্র্যাক করা প্রায়ই কঠিন। ভাগ্যক্রমে Redis আপনাকে commandstat
প্রদান করে নিম্নলিখিত উদাহরণের মতো আপনাকে বিশদ বিবরণ দেখানোর জন্য ইউটিলিটি:
127.0.0.1:6379> INFO commandstats
# Commandstats
cmdstat_get:calls=78,usec=608,usec_per_call=7.79
cmdstat_setex:calls=5,usec=71,usec_per_call=14.20
cmdstat_keys:calls=2,usec=42,usec_per_call=21.00
cmdstat_info:calls=10,usec=1931,usec_per_call=193.10
এটি আপনাকে সমস্ত কমান্ডের একটি ব্রেকডাউন দেয়, আপনি কতবার সেগুলি চালান এবং এটি চালানোর জন্য কতগুলি মাইক্রোসেকেন্ড লেগেছিল (প্রতি কলে মোট এবং গড়)। রিসেট করতে, CONFIG RESETSTAT
চালান , এবং আপনি একটি একেবারে নতুন স্লেট পেয়েছেন।
3. একটি বেসলাইন হিসাবে Redis-বেঞ্চমার্ক ব্যবহার করুন, গসপেল সত্য নয়
রেডিসের স্রষ্টা সালভাতোর, রেডিসকে আন্ডারলাইন করেছেন যে:“রেডিস GET/SET
করছে পরীক্ষা করার জন্য বৃষ্টি হলে আয়না পরিষ্কার করা কতটা ভালো তা দেখার জন্য ফেরারি পরীক্ষা করার মতো। অনেক সময়, লোকেরা আমার কাছে আশ্চর্য হয়ে আসে কেন তাদের রেডিস-বেঞ্চমার্ক ফলাফল সর্বোত্তম থেকে কম। কিন্তু আমাদের অনেকগুলি বিভিন্ন কারণ বিবেচনা করতে হবে, যেমন:
- ক্লায়েন্ট-সাইড সীমাবদ্ধতা
- সংস্করণে পার্থক্য
- চলমান পরীক্ষা
রেডিস-বেঞ্চমার্ক আপনার redis-server
নিশ্চিত করতে একটি দুর্দান্ত বেসলাইন প্রদান করে স্বাভাবিকভাবে আচরণ করছে, কিন্তু এটিকে কখনোই সত্য লোড পরীক্ষা হিসেবে বিবেচনা করা উচিত নয় . লোড টেস্টের প্রতিফলন প্রয়োজন যে আপনার অ্যাপ্লিকেশনটি যতটা সম্ভব উত্পাদনের কাছাকাছি পরিবেশে কীভাবে আচরণ করে।
4. হ্যাশগুলি আপনার সেরা বন্ধু
রাতের খাবারের জন্য হ্যাশকে আমন্ত্রণ জানান। ওয়াইন এবং ডাইন হ্যাশ। আপনি শুধুমাত্র একটি সুযোগ দিলে তারা কী সুখ আনতে পারে তা দেখে আপনি অবাক হয়ে যাবেন৷ আমি এর আগে নিম্নলিখিতগুলির মতো অনেকগুলি মূল কাঠামো দেখেছি:
foo:first_name
foo:last_name
foo:address
সেই উদাহরণে, foo একজন ব্যবহারকারীর জন্য একটি ব্যবহারকারীর নাম হতে পারে এবং সেই লাইনগুলির প্রতিটি একটি পৃথক কী। এটি ত্রুটির জন্য জায়গা যোগ করে এবং ভাঁজে অপ্রয়োজনীয় কী যোগ করে। পরিবর্তে, একটি হ্যাশ বিবেচনা করুন. হঠাৎ আপনি শুধুমাত্র একটি কী পেয়েছেন:
127.0.0.1:6379> HSET foo first_name "Joe"
(integer) 1
127.0.0.1:6379> HSET foo last_name "Engel"
(integer) 1
127.0.0.1:6379> HSET foo address "1 Fanatical Pl"
(integer) 1
127.0.0.1:6379> HGETALL foo
1) "first_name"
2) "Joe"
3) "last_name"
4) "Engel"
5) "address"
6) "1 Fanatical Pl"
127.0.0.1:6379> HGET foo first_name
"Joe"
5. TTL (টাইম টু লাইভ) সেট করুন!
যখনই সম্ভব, মেয়াদ শেষ হওয়া কীগুলির সুবিধা নিন। একটি নিখুঁত উদাহরণ হল অস্থায়ী প্রমাণীকরণ কীগুলির মতো কিছু সংরক্ষণ করা। যখন আপনি OAUTH ব্যবহার করে auth কী পুনরুদ্ধার করেন উদাহরণ হিসেবে, আপনি প্রায়ই মেয়াদ শেষ হওয়ার সময় পান। আপনি যখন কী সেট করবেন, একই মেয়াদ শেষ হওয়ার সাথে এটি সেট করুন এবং রেডিস আপনার জন্য পরিষ্কার করবে! KEYS এর আর প্রয়োজন নেই৷ সেই সমস্ত কীগুলির মাধ্যমে পুনরাবৃত্তি করতে।
6. সঠিক উচ্ছেদ নীতি নির্বাচন করা
যখন আমরা কীগুলি পরিষ্কার করার বিষয়ে আছি, আসুন উচ্ছেদের বিষয়ে স্পর্শ করি। যখন আপনার Redis ইন্সট্যান্স পূর্ণ হয়, তখন Redis কীগুলিকে উচ্ছেদ করার চেষ্টা করে৷ আপনার ব্যবহারের ক্ষেত্রে নির্ভর করে, আমরা volatile-lru
সুপারিশ করি - ধরে নিচ্ছি আপনার মেয়াদ শেষ হওয়া কী আছে। আপনি যদি acache এর মত কিছু চালান এবং মেয়াদোত্তীর্ণ সেট না থাকে তাহলে আপনি allkeys-lru
বিবেচনা করতে পারেন . আমরা সুপারিশ করছি যে আপনি এখানে উপলব্ধ বিকল্পগুলি পরীক্ষা করে দেখুন৷
7. আপনার ডেটা গুরুত্বপূর্ণ হলে, একটি চেষ্টা/ব্যতীত রাখুন
আপনার রেডিস ইনস্ট্যান্সে ডেটা তৈরি করা যদি এটি একেবারেই গুরুত্বপূর্ণ হয়, তাহলে আমি একটি try/except
রাখার পরামর্শ দিচ্ছি . কারণ বেশিরভাগ লোকেরা রেডিস ক্লায়েন্টকে ফায়ার-এন্ড-ফোরগেট করতে কনফিগার করে , যখন একটি কী আসলে ডাটাবেসে পৌঁছায় না তখন আপনার সর্বদা পরিকল্পনা করা উচিত৷ এটি আপনার রেডিস কলে যে জটিলতা যোগ করে তা এই ক্ষেত্রে কিছুই নয়, এবং আপনি নিশ্চিত করতে পারেন যে আপনার গুরুত্বপূর্ণ ডেটা যেখানে থাকা উচিত সেখানে এটি তৈরি করে৷
8. এক দৃষ্টান্ত প্লাবিত করবেন না
যখনই সম্ভব, একাধিক Redis দৃষ্টান্তের মধ্যে কাজের চাপ ভাগ করুন। রিডিস ক্লাস্টার সংস্করণ 3.0.0 হিসাবে উপলব্ধ৷Redis ক্লাস্টার৷ কী রেঞ্জের উপর ভিত্তি করে প্রদত্ত প্রাইমারি এবং সেকেন্ডারিগুলির সেটগুলির মধ্যে কীগুলিকে আলাদা করতে সক্ষম করে। আপনি এখানে রেডিস ক্লাস্টারের পিছনে যাদুটির সম্পূর্ণ ভাঙ্গন খুঁজে পেতে পারেন। এবং আপনি যদি একটি টিউটোরিয়াল খুঁজছেন, তাহলে আর তাকাবেন না। আপনি এখানে পেতে পারেন। যদি ক্লাস্টারিং একটি বিকল্প না হয়, তাহলে নামস্থান বিবেচনা করুন এবং একাধিক উদাহরণের মধ্যে আপনার কীগুলি বিতরণ করুন। আপনি theredis.io ওয়েবসাইটে আপনার ডেটা বিভাজন করার জন্য একটি আশ্চর্যজনক লেখা খুঁজে পেতে পারেন।
9. আরো কোর =ভালো পারফরম্যান্স, তাই না?!
ভুল. Redis হল একটি একক-থ্রেডেড প্রক্রিয়া এবং আপনার যদি অধ্যবসায় সক্ষম থাকে তবে সর্বাধিক দুটি কোর ব্যবহার করবে। আপনি যদি একই হোস্টে একাধিক দৃষ্টান্ত চালানোর পরিকল্পনা না করেন—আশা করি শুধুমাত্র ডেভ টেস্টিংয়ের জন্য, সেক্ষেত্রে—একটি Redis ইন্সট্যান্সের জন্য আপনার দুইটির বেশি কোরের প্রয়োজন হবে না।
10. হা সব জিনিস!
রেডিস সেন্টিনেল এখন খুব ভালভাবে পরীক্ষা করা হয়েছে, এবং অনেক ব্যবহারকারীর এটি উৎপাদনে চলছে (র্যাকস্পেস অবজেক্ট রকেট অন্তর্ভুক্ত)। আপনি যদি আপনার আবেদনের জন্য Redis-এর উপর খুব বেশি নির্ভর করেন, তাহলে আপনাকে অনলাইনে রাখার জন্য একটি উচ্চ প্রাপ্যতা (HA) সমাধান বিবেচনা করতে হবে। অবশ্যই, আপনি যদি সেগুলি নিজেই পরিচালনা করতে না চান, তাহলে Rackspace ObjectRocket 24×7 সমর্থন সহ আমাদের HA প্ল্যাটফর্ম অফার করে। এটি একটি শট দিন.
Rackspace DBA পরিষেবা সম্পর্কে আরও জানুন৷
৷কোনো মন্তব্য করতে বা প্রশ্ন জিজ্ঞাসা করতে প্রতিক্রিয়া ট্যাব ব্যবহার করুন। এছাড়াও আপনিসেলস চ্যাট এ ক্লিক করতে পারেন৷ এখন চ্যাট করতে এবং কথোপকথন শুরু করতে।
র্যাকস্পেস ক্লাউড পরিষেবার শর্তাবলী দেখতে এখানে ক্লিক করুন।