উদাহরণস্বরূপ, আমি রেডিসে ভার্বোজের নামগুলি ব্যবহার করতে চাই set-allBooksBelongToUser:$userId
।
এটি ঠিক আছে নাকি এর প্রভাব কার্যকারিতা?
উদাহরণস্বরূপ, আমি রেডিসে ভার্বোজের নামগুলি ব্যবহার করতে চাই set-allBooksBelongToUser:$userId
।
এটি ঠিক আছে নাকি এর প্রভাব কার্যকারিতা?
উত্তর:
আপনি যে কীটি ব্যবহার করার কথা বলছেন তা আসলে এত দীর্ঘ নয়।
আপনার দেওয়া উদাহরণ কীটি একটি সেটের জন্য, সেট লক করার পদ্ধতিগুলি হ'ল (1)। কোনও সেটের আরও জটিল ক্রিয়াকলাপগুলি (এসডিআইএফএফ, সানিউশন, সাইনটার) হ'ল হে (এন)। সম্ভাবনাগুলি $userId
হ'ল লম্বা কী ব্যবহারের চেয়ে পপুলেশন করা একটি ব্যয়বহুল অপারেশন ছিল।
রেডিস নামক একটি বেঞ্চমার্ক ইউটিলিটি নিয়ে আসে redis-benchmark
, আপনি যদি এসসিআর / রেডিস-বেঞ্চমার্ক.কে "জিইটি" পরীক্ষাটি পরিবর্তন করেন যাতে সেগুলি কেবল "ফু" হয় তবে আপনি একটির পরে সংক্ষিপ্ত কী পরীক্ষা চালাতে পারবেন make install
:
diff --git a/src/redis-benchmark.c b/src/redis-benchmark.c
--- a/src/redis-benchmark.c
+++ b/src/redis-benchmark.c
@@ -475,11 +475,11 @@
benchmark("MSET (10 keys)",cmd,len);
free(cmd);
- len = redisFormatCommand(&cmd,"SET foo:rand:000000000000 %s",data);
+ len = redisFormatCommand(&cmd,"SET foo %s",data);
benchmark("SET",cmd,len);
free(cmd);
- len = redisFormatCommand(&cmd,"GET foo:rand:000000000000");
+ len = redisFormatCommand(&cmd,"GET foo");
benchmark("GET",cmd,len);
free(cmd);
শর্ট কী "foo" এর পরবর্তী 3 টি রানের জন্য জিইটি পরীক্ষার গতি এখানে রয়েছে:
59880.24 requests per second
58139.53 requests per second
58479.53 requests per second
উত্সটি আবার সংশোধন করার পরে এবং "সেট-অলবুকস বেলংটোজার: 1234567890" তে কীটি পরিবর্তন করার পরে জিইটি পরীক্ষার গতি এখানে রয়েছে:
60240.96 requests per second
60606.06 requests per second
58479.53 requests per second
"কীভাবে আবারও" Chanসুম্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস্লোরিপস ফ্লোরসস ইউরিপস ইউরোপসিলোরিসপ্লোরসিউলরিপসিলোরিপস্লুরিওসিসমোরোরিসপ্লোরসিউলরিপস্লুরিওসিসপ্লোরইউরিওসিলোরিসপ্লোরসোমরিওসিলোরিসপ্লুরিস্লোরিপস্লুরসোরিওসিলোরিসপ্লোরস্লোরিপস্লুরিওরিয়াসপ্লুরিস্লোরিপস্লোরিপসিলোরিয়াসপ্লুরিস্লোরিপস্লোরিপসালুওরিয়াসপ্লোরস্লোরিপসিলোরিসপ্লুরিস্লোরিপস্লোরিপসালুওরিয়াসলুইসরিওরিয়াসপ্লোরস্লোরিপসপ্লোরইরিওরিজ।
58479.53 requests per second
58139.53 requests per second
56179.77 requests per second
সুতরাং এমনকি সত্যই দীর্ঘ দীর্ঘ কীগুলি রেডিসের গতিতে বড় প্রভাব ফেলবে না। এবং এটি জিইটি, একটি ও (1) অপারেশন। আরও জটিল অপারেশনগুলি এর চেয়ে কম সংবেদনশীল হবে be
আমি মনে করি যে কীগুলি রয়েছে যা স্পষ্টভাবে চিহ্নিত করে যে কোন মানগুলিকে তারা বহন করে তা কোনও সংক্ষিপ্ত গতির কর্মক্ষমতা ছাড়িয়ে যায় যা আপনি সংক্ষিপ্ত কীগুলি থেকে বেরিয়ে আসতে পারেন।
আপনি যদি এটিকে আরও এগিয়ে নিতে চান, -r [keyspacelen]
তবে রেডিস-বেঞ্চমার্ক ইউটিলিটিতে একটি প্যারামিটার রয়েছে যা এলোমেলো কী তৈরি করতে দেয় (যতক্ষণ না তাদের ': র্যান্ড:' সেগুলিতে রয়েছে), আপনি কেবল প্রিফিক্সটির আকার বাড়িয়ে নিতে পারেন আপনি যে দৈর্ঘ্যের চেয়েছিলেন টেস্টিং কোড
রেডিস মেমরির সমস্ত কী ধরে রাখতে পছন্দ করে। আপনার গড় কী দৈর্ঘ্য যত বেশি হবে তত কম স্মৃতিতে রাখা যাবে। সুতরাং হ্যাঁ, কী দৈর্ঘ্য কর্মক্ষমতাকে ব্যাপকভাবে প্রভাবিত করতে পারে তবে সম্ভবত আপনি যেভাবে উদ্বিগ্ন তা তেমন উল্লেখযোগ্য নয়। এটি একটি ছোট কীস্পেস (উদাহরণস্বরূপ যা মেমরিতে সহজেই ফিট করে) সহ, একটি 128 বাইট কী এবং একটি 16 বাইট কী নাটকীয়ভাবে আলাদাভাবে সম্পাদন করতে পারে না।
আমি কোনও প্রশ্নের সাথে এই প্রশ্নের উত্তর দিতে পারি না। তবে আমি এ সম্পর্কে কিছু প্রশ্ন জিজ্ঞাসা করতে পারি এবং কিছু পর্যবেক্ষণও দিতে পারি।
আমি মনে করি এটা সুস্পষ্ট যে অত্যন্ত দীর্ঘ কী (নাম) এবং / অথবা মানগুলি যদি এগুলি ব্যবহার করা যায় তবে সামগ্রিক কর্মক্ষমতাতে পারফরম্যান্সের প্রভাব ফেলবে। এই প্রভাবগুলি ক্লায়েন্টে, নেটওয়ার্কে বা সার্ভারে থাকতে পারে। সুতরাং আপনার থেকে টেনে আনার প্রথম প্রশ্নটি হ'ল:
রেডিস এবং আপনার ক্লায়েন্টদের মধ্যে কী এবং মানগুলি কতক্ষণ থাকতে পারে?
রেডিস , মূল দৈর্ঘ্য এবং সীমাবদ্ধতার উপর অনুসন্ধান করা আমাকে রেডিস বনাম মেমক্যাচে একটি আকর্ষণীয় ব্লগ এন্ট্রি জাল করেছে যা আপনার প্রশ্নের উত্তর দিতে শুরু করতে পারে। ব্লগের প্রবেশের প্রথম প্রতিক্রিয়া রেডিসের স্রষ্টা সালভাতোর সানফিলিপো লিখেছেন বলে মনে হয় (শেষ শরত্কালে: 09/2010) প্রস্তাবিত হয়েছিল যে আরও একটি সাম্প্রতিক সংস্করণ উল্লেখযোগ্যভাবে আরও ভাল ফলাফল প্রদর্শন করবে। এই লিঙ্ক থেকে দু'টি মন্তব্য আমাদের সালভাতোরের রেডিস / স্মৃতিচারণকারী বেঞ্চমার্কের সাথে লিখিত হয়েছে যা মূল "ব্লগার" (যিনি বেনামে বলে মনে হচ্ছে) এর প্রতিক্রিয়া জানার কয়েকদিন পরে পোস্ট করা হয়েছিল।
এটি প্রশ্নের উত্তর দেয় না (কীগুলি দীর্ঘকাল হতে পারে এবং কোন পয়েন্টে পারফরম্যান্সে সনাক্তযোগ্য প্রভাব রয়েছে)। যাইহোক, এটি আমাদের প্রশ্নের পদ্ধতির বিষয়ে একটি সূত্র দেয়।
এই দুটি নিবন্ধের লেখক কোড লিখেছেন এবং এটি পরীক্ষা করেছেন ... এবং ফলাফলগুলি আঁকেন।
আমরা অনুমানের সব ধরণের করতে পারে। আমরা কোডটি দেখতে পারি এবং এটি যুক্তি দিয়ে দেখার চেষ্টা করতে পারি।
যাইহোক, এই ধরণের প্রশ্নের কাছে যাওয়ার সর্বাধিক অর্থপূর্ণ উপায় হ'ল একটি প্রস্তাবিত ব্যবহারের ধরণটি পরিমাপ করার জন্য কিছু কোড লিখে ... এবং আরও কিছু পরীক্ষা করার জন্য (উদাহরণস্বরূপ 8 টি অক্ষর থেকে শুরু করে মূল দৈর্ঘ্যের একটি পরিসীমা ... কীভাবে আপনি কি দীর্ঘ ... 8 কিলোবাইট চান?) ... এবং এটি পরিমাপ করুন
ভেরিয়েবল নামের দৈর্ঘ্য কার্য সম্পাদনকে প্রভাবিত করবে বলে আমি মনে করি না, ভেরিয়েবল একই ডেটাটাইপের জন্য যেভাবে আপনার সর্বাধিক দৈর্ঘ্যের দৈর্ঘ্য অতিক্রম না করে সেখানে স্থান নেবে।