রেডিসে কীগুলির সংখ্যা মুদ্রণের কোনও উপায় আছে?
আমি সতর্ক
keys *
তবে কিছুটা ভারী ওজন মনে হচ্ছে। - রেডিস একটি মূল মানের দোকান এটি দেওয়া সম্ভবত এটিই করার একমাত্র উপায়। তবে আমি এখনও লাইনের সাথে কিছু দেখতে চাই
count keys *
রেডিসে কীগুলির সংখ্যা মুদ্রণের কোনও উপায় আছে?
আমি সতর্ক
keys *
তবে কিছুটা ভারী ওজন মনে হচ্ছে। - রেডিস একটি মূল মানের দোকান এটি দেওয়া সম্ভবত এটিই করার একমাত্র উপায়। তবে আমি এখনও লাইনের সাথে কিছু দেখতে চাই
count keys *
উত্তর:
আপনি INFO কমান্ড জারি করতে পারেন, যা সার্ভার সম্পর্কে তথ্য এবং পরিসংখ্যান ফেরত দেয়। একটি উদাহরণ আউটপুট জন্য এখানে দেখুন ।
এমভিসিএইচআর দ্বারা মন্তব্যে উল্লিখিত হিসাবে, আপনি info keyspace
সরাসরি রেডিস-ক্লাইমে ব্যবহার করতে পারেন ।
redis-cli INFO Keyspace | grep ^db
DBSIZE
কীগুলির সংখ্যা দেয় এবং পার্স করা আরও সহজ।
ডাউনসাইড: যদি কোনও কীটির মেয়াদ শেষ হয়ে যায় তবে এটি এখনও গণনা করতে পারে।
KEYS *
মেয়াদোত্তীর্ণ কীটি সরিয়ে দেয়। এছাড়াও রেডিস সক্রিয়ভাবে কিছু মেয়াদোত্তীর্ণ কীগুলি উচ্ছেদ করতে পারে , তবে অগত্যা সেগুলি সবই নয়।
সতর্কতা: এটি কোনও প্রোডাকশন মেশিনে চালাবেন না।
একটি লিনাক্স বাক্সে:
redis-cli KEYS "*" | wc -l
দ্রষ্টব্য: নীচে মন্তব্যগুলিতে উল্লিখিত হিসাবে, এটি একটি ও (এন) অপারেশন, সুতরাং অনেকগুলি কী সহ একটি বড় ডিবিতে আপনার এটি ব্যবহার করা উচিত নয়। ছোট মোতায়েনের জন্য, এটি ঠিক থাকতে হবে।
কীগুলির মোট সংখ্যা গণনা করার জন্য, নীচের কমান্ডটি ব্যবহার করুন:
127.0.0.1:6379> DBSIZE
এটি ব্যবহার করে DBSIZE
আপনাকে কোনও কী দিতে হবে না
বর্তমানে নির্বাচিত ডাটাবেসে কীগুলির সংখ্যাটি ফিরিয়ে দিন।
আরও পড়তে http://redis.io/commands/dbsize
যেহেতু রেডিস ২.6, লুয়া সমর্থিত তাই আপনি এ জাতীয় সংখ্যক ওয়াইল্ডকার্ড কী পেতে পারেন
eval "return #redis.call('keys', 'prefix-*')" 0
দেখতে Eval কমান্ড
KEYS
(সহ বা ছাড়া একটি উপসর্গ) কী গণনা bathwater সঙ্গে শিশুর নিক্ষেপ ভালো হয়।
#
এই কোড মধ্যে দৈর্ঘ্য অপারেটর হয় ।
dbsize()
কীগুলির মোট সংখ্যা প্রদান করে।
এলোমেলোভাবে কী কী নমুনা দিয়ে প্রদত্ত প্যাটার্নের সাথে মেলে কীগুলির সংখ্যা আপনি দ্রুত নির্ণয় করতে পারেন, তারপরে কোনটি ভগ্নাংশের সাথে মেলে তা পরীক্ষা করে।
অজগর উদাহরণ; দিয়ে শুরু সমস্ত কী গণনা prefix_
:
import redis
r = redis.StrictRedis(host = 'localhost', port=6379)
iter=1000
print 'Approximately', r.dbsize() * float(sum([r.randomkey().startswith('prefix_') for i in xrange(iter)])) / iter
এমনকি iter=100
আমার ক্ষেত্রে একটি শালীন অনুমান দেয়, তবে তুলনায় খুব দ্রুত keys prefix_
।
প্রতিটি অনুরোধের জন্য 1000 কীগুলির নমুনা করা একটি উন্নতি, তবে মোট সংখ্যাটি রেখে দিন, যাতে দুটি অনুরোধের পরে আপনি 2000 দ্বারা ভাগ করবেন, তিনটি অনুরোধের পরে আপনি 3000 দ্বারা বিভক্ত করবেন divide সুতরাং, যদি আপনার অ্যাপ্লিকেশন মোট সংখ্যাটিতে আগ্রহী মোটামুটি প্রায়শই কীগুলির সাথে মিলবে, তারপরে প্রতিবার এটি সত্য মানের কাছাকাছি এবং কাছাকাছি চলে আসবে।
Redis 2.6 এর পরে, INFO কমান্ডের ফলাফলটি বিভাগ দ্বারা বিভক্ত হয়। "কীস্পেস" বিভাগে, "কীগুলি" এবং "মেয়াদোত্তীর্ণ কীগুলি" ক্ষেত্র রয়েছে যে কতগুলি কী আছে তা জানাতে।