উত্তর:
KEYS
কমান্ড দেখার চেষ্টা করুন । KEYS *
redis এ সঞ্চিত সমস্ত কী তালিকাভুক্ত করবে।
সম্পাদনা করুন: দয়া করে KEYS
ডকুমেন্টেশন পৃষ্ঠার শীর্ষে সতর্কতাটি নোট করুন :
সময় জটিলতা: ডাটাবেস এবং প্রদত্ত প্যাটার্নের মূল নামগুলির সীমিত দৈর্ঘ্য রয়েছে এই ধারণার অধীনে ডাটাবেজে কীগুলির সংখ্যা হ'ল এন (এন) রয়েছে।
আপডেট (ভি ২.৮ বা ততোধিক): এই অর্থে যে এটি সার্ভারকে অবরুদ্ধ করে না এবং এটি উল্লেখযোগ্য সংস্থান গ্রহণ করে না SCAN
তার পক্ষে একটি উচ্চতর বিকল্প KEYS
। এটি ব্যবহার পছন্দ।
KEYS
বড় ডেটা সেট জিজ্ঞাসা করার সময় সার্ভারকে দীর্ঘ সময়ের জন্য ব্লক করার সম্ভাবনা রয়েছে
রেডিস ২.৮ এবং তারপরের জন্য আপডেট হয়েছে
এই প্রশ্নের আগের উত্তরের মন্তব্যে যেমন উল্লেখ করা হয়েছে, KEYS
এটি একটি সম্ভাব্য বিপজ্জনক কমান্ড কারণ আপনার রেডিস সার্ভারটি এটি পরিবেশন করার সময় অন্যান্য ক্রিয়াকলাপগুলি উপলভ্য হবে না। এর সাথে আরও একটি ঝুঁকি KEYS
হ'ল এটির প্রতিক্রিয়া বাফার প্রস্তুত করতে প্রচুর র্যাম (আপনার কীস্পেসের আকারের উপর নির্ভরশীল) ব্যবহার করতে পারে, সম্ভবত এটি আপনার সার্ভারের স্মৃতিশক্তি ক্লান্ত করে দেয়।
রেডিসের ২.৮ সংস্করণে স্ক্যানের কমান্ডগুলির পরিবার প্রবর্তিত হয়েছিল যা অনেক বেশি নম্র এবং একই উদ্দেশ্যে ব্যবহার করা যেতে পারে।
সিএলআই এটির সাথে কাজ করার একটি দুর্দান্ত উপায়ও সরবরাহ করে:
$ redis-cli --scan --pattern '*'
এটি ঘটতে পারে যে redis-cli ব্যবহার করে আপনি আপনার দূরবর্তী redis-সার্ভারের সাথে সংযোগ স্থাপন করুন এবং তারপরে আদেশটি:
KEYS *
কিছুই দেখাচ্ছে না বা আরও ভাল, এটি দেখায়:
(empty list or set)
আপনি যদি নিশ্চিত হন যে আপনি যে রেডিস সার্ভারটি ব্যবহার করেন এটিই আপনার কাছে ডেটা রয়েছে তবে আপনার রেডিস-ক্লাইম রেডিসের সঠিক ডাটাবেসের উদাহরণের সাথে সংযুক্ত হচ্ছে না।
রেডিস ডক্সে যেমন উল্লেখ করা হয়েছে, নতুন সংযোগগুলি ডিবি 0-র সাথে ডিফল্ট হিসাবে সংযুক্ত হয় ।
আমার ক্ষেত্রে KEYS
কমান্ড ফলাফলগুলি পুনরুদ্ধার করছে না কারণ আমার ডাটাবেস 1 ছিল আপনার পছন্দসই ডিবি নির্বাচন করতে, নির্বাচন করুন নির্বাচন করুন ।
ডিবি একটি পূর্ণসংখ্যা দ্বারা চিহ্নিত করা হয়।
SELECT 1
KEYS *
আমি এই তথ্যটি পোস্ট করি কারণ পূর্ববর্তী কোনও উত্তরই আমার সমস্যাটির সমাধান করছিল না।
-> redis-cli থেকে সমস্ত কী পান Get
-redis 127.0.0.1:6379> keys *
-> নিদর্শন তালিকা পান
-redis 127.0.0.1:6379> keys d??
এটি তিনটি অক্ষর দিয়ে 'd' দিয়ে শুরু হওয়া কীগুলি তৈরি করবে।
-redis 127.0.0.1:6379> keys *t*
এই উইলের সাথে কীগুলির সাথে মিলবে 'টি' অক্ষর keys
-> কমান্ড লাইন থেকে কী গণনা করুন
-redis-cli keys * |wc -l
-> অথবা আপনি ব্যবহার করতে পারেন dbsize
-redis-cli dbsize
key *t*
করুন keys *t*
।
রেডিস চিট শিট অনুসরণ করে দেখুন । রেডিস-ক্লাইমের সাথে রেডিস কীগুলির একটি উপসেট পেতে আমি কমান্ডটি ব্যবহার করি
KEYS "prefix:*"
হ্যাঁ, আপনি এটি ব্যবহার করে সমস্ত কী পেতে পারেন
var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);
redisClient.keys('*example*', function (err, keys) {
})
KEYS এর মতো মেমরিটিতে সমস্ত কীগুলি লোড করার জন্য স্ক্যানের ক্লায়েন্টের প্রয়োজন হয় না। স্ক্যান আপনাকে ব্যবহার করতে পারে এমন একটি পুনরাবৃত্তি দেয়। আমার রেডিসে আমার 1B রেকর্ড ছিল এবং আমি একবারে সমস্ত কীগুলি ফেরত দিতে পর্যাপ্ত মেমরি পেতে পারি না।
স্টোর থেকে সমস্ত কীগুলি কোনও প্যাটার্নের সাথে মেলে এবং সেগুলি মুছতে এখানে একটি অজগর স্নিপেট রয়েছে:
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
print key
মূল নিদর্শন
1.0.0 থেকে উপলব্ধ।
সময় জটিলতা: ডাটাবেস এবং প্রদত্ত প্যাটার্নের মূল নামগুলির সীমিত দৈর্ঘ্য রয়েছে এই ধারণার অধীনে ডাটাবেজে কীগুলির সংখ্যা হ'ল এন (এন) রয়েছে।
সমস্ত কী কী মিলছে প্যাটার্ন দেয়।
সতর্কতা: এই কমান্ডটি ব্যবহারের জন্য প্রস্তাবিত নয় কারণ এটি KEYS এর পরিবর্তে বৃহত ডাটাবেসের বিরুদ্ধে কার্যকর করা হলে আপনি কর্মসূচি নষ্ট করতে পারেন আপনি স্ক্যান বা এসটিএস ব্যবহার করতে পারেন ।
ব্যবহারের জন্য KEYS কমান্ডের উদাহরণ:
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
redis> KEYS *name*
1) "lastname"
2) "firstname"
redis> KEYS a??
1) "age"
redis> KEYS *
1) "lastname"
2) "age"
3) "firstname"
যদি আপনার রেডিস একটি ক্লাস্টার হয় তবে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন
#!/usr/bin/env bash
redis_list=("172.23.3.19:7001,172.23.3.19:7002,172.23.3.19:7003,172.23.3.19:7004,172.23.3.19:7005,172.23.3.19:7006")
arr=($(echo "$redis_list" | tr ',' '\n'))
for info in ${arr[@]}; do
echo "start :${info}"
redis_info=($(echo "$info" | tr ':' '\n'))
ip=${redis_info[0]}
port=${redis_info[1]}
echo "ip="${ip}",port="${port}
redis-cli -c -h $ip -p $port set laker$port '湖人总冠军'
redis-cli -c -h $ip -p $port keys \*
done
echo "end"
রেডিস সার্ভারে সমস্ত কীগুলি উপলভ্য হওয়ার জন্য আপনার পুনরায় ক্রিসটি খুলতে হবে এবং টাইপ করা উচিত:
KEYS *
আরও সহায়তা পেতে দয়া করে এই পৃষ্ঠাটি দেখুন:
এই লিঙ্ক
আমাদের আবার - 2.8 এবং এর পরে রেডিস সহ স্ক্যান - প্যাটার্ন ব্যবহার করা উচিত।
আপনি রেডিস-ক্লাইমের শীর্ষে এই মোড়কটি ব্যবহার করে দেখতে পারেন। https://github.com/VijayantSoni/redis-helper
আপনি কেবল রেডিস-ক্লাইম ব্যবহার করে আপনার রেডিস সার্ভারের সাথে সংযোগ করতে পারেন, আপনার ডাটাবেসটি নির্বাচন করুন এবং KEYS * টাইপ করুন, দয়া করে মনে রাখবেন এটি আপনাকে নির্বাচিত রেডিস ডাটাবেসে উপস্থিত সমস্ত কী প্রদান করবে।
redis-cli keys "*"