সমস্ত উপলব্ধ কীগুলি পেতে কমান্ড পুনরায় করুন?


501

ডাটাবেসে সমস্ত কী আনার জন্য কি রেডিস কমান্ড রয়েছে? আমি পাইথন-রেডিস গ্রন্থাগারগুলি সেগুলি আনতে দেখেছি। কিন্তু ভাবছিলাম যে এটি রেডিস-ক্লায়েন্টের কাছ থেকে সম্ভব কিনা।

উত্তর:


720

KEYSকমান্ড দেখার চেষ্টা করুন । KEYS *redis এ সঞ্চিত সমস্ত কী তালিকাভুক্ত করবে।

সম্পাদনা করুন: দয়া করে KEYSডকুমেন্টেশন পৃষ্ঠার শীর্ষে সতর্কতাটি নোট করুন :

সময় জটিলতা: ডাটাবেস এবং প্রদত্ত প্যাটার্নের মূল নামগুলির সীমিত দৈর্ঘ্য রয়েছে এই ধারণার অধীনে ডাটাবেজে কীগুলির সংখ্যা হ'ল এন (এন) রয়েছে।

আপডেট (ভি ২.৮ বা ততোধিক): এই অর্থে যে এটি সার্ভারকে অবরুদ্ধ করে না এবং এটি উল্লেখযোগ্য সংস্থান গ্রহণ করে না SCANতার পক্ষে একটি উচ্চতর বিকল্প KEYS। এটি ব্যবহার পছন্দ।


96
সিএলআই ব্যবহারের উদাহরণ:redis-cli keys "*"
XåpplI'-I0llwlg'I -

4
সংশোধন: সমস্ত redis কমান্ড একক থ্রেড এবং সার্ভার ব্লক করবে। পার্থক্যটি হ'ল KEYSবড় ডেটা সেট জিজ্ঞাসা করার সময় সার্ভারকে দীর্ঘ সময়ের জন্য ব্লক করার সম্ভাবনা রয়েছে
লিও

155

রেডিস ২.৮ এবং তারপরের জন্য আপডেট হয়েছে

এই প্রশ্নের আগের উত্তরের মন্তব্যে যেমন উল্লেখ করা হয়েছে, KEYSএটি একটি সম্ভাব্য বিপজ্জনক কমান্ড কারণ আপনার রেডিস সার্ভারটি এটি পরিবেশন করার সময় অন্যান্য ক্রিয়াকলাপগুলি উপলভ্য হবে না। এর সাথে আরও একটি ঝুঁকি KEYSহ'ল এটির প্রতিক্রিয়া বাফার প্রস্তুত করতে প্রচুর র‌্যাম (আপনার কীস্পেসের আকারের উপর নির্ভরশীল) ব্যবহার করতে পারে, সম্ভবত এটি আপনার সার্ভারের স্মৃতিশক্তি ক্লান্ত করে দেয়।

রেডিসের ২.৮ সংস্করণে স্ক্যানের কমান্ডগুলির পরিবার প্রবর্তিত হয়েছিল যা অনেক বেশি নম্র এবং একই উদ্দেশ্যে ব্যবহার করা যেতে পারে।

সিএলআই এটির সাথে কাজ করার একটি দুর্দান্ত উপায়ও সরবরাহ করে:

$ redis-cli --scan --pattern '*'

59

এটি ঘটতে পারে যে redis-cli ব্যবহার করে আপনি আপনার দূরবর্তী redis-সার্ভারের সাথে সংযোগ স্থাপন করুন এবং তারপরে আদেশটি:

KEYS *

কিছুই দেখাচ্ছে না বা আরও ভাল, এটি দেখায়:
(empty list or set)

আপনি যদি নিশ্চিত হন যে আপনি যে রেডিস সার্ভারটি ব্যবহার করেন এটিই আপনার কাছে ডেটা রয়েছে তবে আপনার রেডিস-ক্লাইম রেডিসের সঠিক ডাটাবেসের উদাহরণের সাথে সংযুক্ত হচ্ছে না।

রেডিস ডক্সে যেমন উল্লেখ করা হয়েছে, নতুন সংযোগগুলি ডিবি 0-র সাথে ডিফল্ট হিসাবে সংযুক্ত হয় ।

আমার ক্ষেত্রে KEYSকমান্ড ফলাফলগুলি পুনরুদ্ধার করছে না কারণ আমার ডাটাবেস 1 ছিল আপনার পছন্দসই ডিবি নির্বাচন করতে, নির্বাচন করুন নির্বাচন করুন
ডিবি একটি পূর্ণসংখ্যা দ্বারা চিহ্নিত করা হয়।

SELECT 1
KEYS *

আমি এই তথ্যটি পোস্ট করি কারণ পূর্ববর্তী কোনও উত্তরই আমার সমস্যাটির সমাধান করছিল না।


31

-> 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*
কুনাল দেদে

এই তথ্যের জন্য ধন্যবাদ বন্ধু, এটি আমার ভুল ছিল .c বর্তমান আমি মোবাইলে আছি i আমি সেই আদেশটি ইয়ারিয়ার পরিবর্তন করব।
ড্যানি

এটি খুব দরকারী চিটশিট
হাসান বৈগ

19

রেডিস চিট শিট অনুসরণ করে দেখুন । রেডিস-ক্লাইমের সাথে রেডিস কীগুলির একটি উপসেট পেতে আমি কমান্ডটি ব্যবহার করি

KEYS "prefix:*"

6

হ্যাঁ, আপনি এটি ব্যবহার করে সমস্ত কী পেতে পারেন

var redis = require('redis');
redisClient = redis.createClient(redis.port, redis.host);    
  redisClient.keys('*example*', function (err, keys) {
})

4
ওপি কী জিজ্ঞাসা করছে ঠিক তা নয় (রেডিস-ক্লিমে), তবে তবুও এটি এটিকে নির্দেশ করার জন্য ধন্যবাদ।
হারিক

4

KEYS এর মতো মেমরিটিতে সমস্ত কীগুলি লোড করার জন্য স্ক্যানের ক্লায়েন্টের প্রয়োজন হয় না। স্ক্যান আপনাকে ব্যবহার করতে পারে এমন একটি পুনরাবৃত্তি দেয়। আমার রেডিসে আমার 1B রেকর্ড ছিল এবং আমি একবারে সমস্ত কীগুলি ফেরত দিতে পর্যাপ্ত মেমরি পেতে পারি না।

স্টোর থেকে সমস্ত কীগুলি কোনও প্যাটার্নের সাথে মেলে এবং সেগুলি মুছতে এখানে একটি অজগর স্নিপেট রয়েছে:

import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("key_pattern*"):
    print key

3
redis-cli -h <host> -p <port> keys * 

যেখানে * সমস্ত কী তালিকাভুক্ত করার প্যাটার্ন


2
আমাকে নীচের মতো তারার উদ্ধৃতি দিতে হয়েছিল:redis-cli -h <host> -p <port> keys '*'
সমষ্টি

3

মূল নিদর্শন

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"

1

যদি আপনার রেডিস একটি ক্লাস্টার হয় তবে আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন

#!/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"

1

রেডিসে সমস্ত কী পান

--Scan বিকল্পটি ব্যবহার করে সমস্ত কীগুলি পান:

$ redis-cli --scan --pattern '*'

KEYS কমান্ড ব্যবহার করে সমস্ত কী তালিকাভুক্ত করুন:

$ redis-cli KEYS '*'

0

রেডিস সার্ভারে সমস্ত কীগুলি উপলভ্য হওয়ার জন্য আপনার পুনরায় ক্রিসটি খুলতে হবে এবং টাইপ করা উচিত: KEYS * আরও সহায়তা পেতে দয়া করে এই পৃষ্ঠাটি দেখুন: এই লিঙ্ক


0

আমাদের আবার - 2.8 এবং এর পরে রেডিস সহ স্ক্যান - প্যাটার্ন ব্যবহার করা উচিত।

আপনি রেডিস-ক্লাইমের শীর্ষে এই মোড়কটি ব্যবহার করে দেখতে পারেন। https://github.com/VijayantSoni/redis-helper


0

আপনি যদি লারাভেল ফ্রেমওয়ার্ক ব্যবহার করছেন তবে আপনি কেবল এটি ব্যবহার করতে পারেন:

$allKeyList = Redis::KEYS("*");

print_r($allKeyList);

কোর পিএইচপি-তে:

$redis = new Redis();

$redis->connect('hostname', 6379);

$allKeyList = $redis->keys('*');

print_r($allKeyList);

0

আপনি কেবল রেডিস-ক্লাইম ব্যবহার করে আপনার রেডিস সার্ভারের সাথে সংযোগ করতে পারেন, আপনার ডাটাবেসটি নির্বাচন করুন এবং KEYS * টাইপ করুন, দয়া করে মনে রাখবেন এটি আপনাকে নির্বাচিত রেডিস ডাটাবেসে উপস্থিত সমস্ত কী প্রদান করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.