सभी उपलब्ध कुंजी प्राप्त करने के लिए रेडिस कमांड?


501

क्या डेटाबेस में सभी कुंजियाँ लाने के लिए Redis कमांड है? मैंने कुछ अजगर-लालियों की लाइब्रेरी को देखा है। लेकिन सोच रहा था कि क्या यह रेडिस-क्लाइंट से संभव है।

जवाबों:


720

KEYSकमांड देखने की कोशिश करें । KEYS *रेडिस में संग्रहीत सभी कुंजियों को सूचीबद्ध करेगा।

संपादित करें: कृपया KEYSप्रलेखन पृष्ठ के शीर्ष पर चेतावनी पर ध्यान दें :

समय की जटिलता: O (N) डेटाबेस में कुंजी की संख्या होने के साथ N, इस धारणा के तहत कि डेटाबेस में दिए गए प्रमुख नाम और दिए गए पैटर्न की लंबाई सीमित है।

अद्यतन (V2.8 या अधिक): इस अर्थ में SCANएक बेहतर विकल्प KEYSहै कि यह सर्वर को ब्लॉक नहीं करता है और न ही महत्वपूर्ण संसाधनों का उपभोग करता है। इसका उपयोग करना पसंद करें।


96
सीएलआई उपयोग उदाहरण:redis-cli keys "*"
XåpplI'-I0llwlg'I -

4
सुधार: सभी रेडिस कमांड सिंगल-थ्रेड हैं और सर्वर को ब्लॉक करेंगे। एकमात्र अंतर यह है कि KEYSएक बड़े डेटा सेट को क्वेरी करते समय सर्वर को लंबे समय तक अवरुद्ध करने की क्षमता है
सिंह

155

रेडिस 2.8 और इसके बाद के संस्करण के लिए अद्यतन

जैसा कि इस प्रश्न के पिछले उत्तरों की टिप्पणियों में उल्लेख किया गया है, KEYSएक संभावित खतरनाक कमांड है क्योंकि आपका रेडिस सर्वर इसे संचालित करते समय अन्य संचालन करने के लिए उपलब्ध नहीं होगा। इसके साथ एक और जोखिम KEYSयह है कि यह प्रतिक्रिया बफर तैयार करने के लिए बहुत सारे रैम (आपके कीस्पेस के आकार पर निर्भर) का उपभोग कर सकता है, इस प्रकार संभवतः आपके सर्वर की मेमोरी को समाप्त कर सकता है।

रेडिस के संस्करण 2.8 ने SCAN की शुरुआत की थी परिवार को आदेशों का जो बहुत अधिक विनम्र हैं और उसी उद्देश्य के लिए इसका उपयोग किया जा सकता है।

सीएलआई भी इसके साथ काम करने का एक अच्छा तरीका प्रदान करता है:

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

59

ऐसा हो सकता है कि रेडिस-क्ली का उपयोग करते हुए, आप अपने दूरस्थ रेडिस-सर्वर से कनेक्ट होते हैं, और फिर कमांड:

KEYS *

यह कुछ भी या बेहतर नहीं दिखा रहा है, यह दिखाता है:
(empty list or set)

यदि आप पूरी तरह से सुनिश्चित हैं कि आपके द्वारा उपयोग किया जाने वाला रेडिस सर्वर वह है जिसके पास आपके पास डेटा है, तो हो सकता है कि आपका Redis-cli Redis सही डेटाबेस आवृत्ति से कनेक्ट नहीं हो रहा हो।

जैसा कि रेडिस डॉक्स में वर्णित है, नए कनेक्शन डीबी 0 के लिए डिफ़ॉल्ट के रूप में कनेक्ट होते हैं ।

मेरे मामले में KEYSकमांड परिणाम प्राप्त नहीं कर रहा था क्योंकि मेरा डेटाबेस था 1. डेब का चयन करने के लिए आप चाहते हैं, SELECT का उपयोग करें
Db की पहचान एक पूर्णांक द्वारा की जाती है।

SELECT 1
KEYS *

मैं यह जानकारी पोस्ट करता हूं क्योंकि पिछले उत्तरों में से कोई भी मेरा मुद्दा हल नहीं कर रहा था।


31

-> रेडिस-क्लि से सभी कुंजी प्राप्त करें

-redis 127.0.0.1:6379> keys *

-> पैटर्न की सूची प्राप्त करें

-redis 127.0.0.1:6379> keys d??

यह तीन वर्णों के साथ 'd' से शुरू होने वाली कुंजियों का उत्पादन करेगा।

-redis 127.0.0.1:6379> keys *t*

इस wil को कुंजी में मैचों के 't' अक्षर के साथ चाबी मिलती है

-> कमांड लाइन से कुंजी को गिनें

-redis-cli keys * |wc -l

-> या आप उपयोग कर सकते हैं dbsize

-redis-cli dbsize

बस जवाबों की नकल की और कोशिश की। इसने "अज्ञात कमांड 'की' दिया।" "की" कमांड नहीं है, "की" है। कृपया सही key *t*करें keys *t*
कुणाल देथे

उस जानकारी के लिए धन्यवाद दोस्त। यह मेरी गलती थी। मैं मोबाइल पर हूं। मैं उस कमांड ईगलियर को बदल दूंगा।
डेनी

यह बहुत उपयोगी है
हसन बेग

19

Redis Cheat Sheet पर एक नज़र डालें । Redis-cli के साथ रेडिस कुंजी का एक सबसेट प्राप्त करने के लिए मैं कमांड का उपयोग करता हूं

KEYS "prefix:*"

6

हां, आप इसका उपयोग करके सभी कुंजी प्राप्त कर सकते हैं

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

4
ठीक वैसा नहीं जैसा ओपी पूछ रहा था (रेडिस-क्ली), लेकिन फिर भी इस ओर इशारा करने के लिए धन्यवाद।
हेरिक

4

SCAN को क्लाइंट को सभी कुंजियों को मेमोरी में लोड करने की आवश्यकता नहीं होती है जैसे कि KEYS करता है। SCAN आपको एक पुनरावृत्त देता है जिसका आप उपयोग कर सकते हैं। मेरे रेडिस में 1 बी रिकॉर्ड था और मुझे एक बार में सभी कुंजी वापस करने के लिए पर्याप्त मेमोरी नहीं मिल सकी।

यहाँ एक पैटर्न से मेल खाते स्टोर से सभी कुंजी प्राप्त करने और उन्हें हटाने के लिए एक अजगर स्निपेट है:

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 के बाद से उपलब्ध है।

समय की जटिलता: O (N) डेटाबेस में कुंजी की संख्या होने के साथ N, इस धारणा के तहत कि डेटाबेस में दिए गए प्रमुख नाम और दिए गए पैटर्न की लंबाई सीमित है।

सभी कुंजी मिलान पैटर्न लौटाता है।

चेतावनी: इस आदेश का उपयोग करने की अनुशंसा नहीं की जाती है क्योंकि यह प्रदर्शन को बर्बाद कर सकता है जब इसे कुंजी के बजाय बड़े डेटाबेस के विरुद्ध निष्पादित किया जाता है तो आप SCAN या SETS का उपयोग कर सकते हैं ।

उपयोग करने के लिए 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

रेडिस में सभी कुंजी प्राप्त करें

--स्कैन विकल्प का उपयोग करके सभी कुंजी प्राप्त करें:

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

कुंजी कुंजियों का उपयोग करके सभी कुंजियों को सूचीबद्ध करें:

$ redis-cli KEYS '*'

0

Redis सर्वर में उपलब्ध सभी कुंजियों को प्राप्त करने के लिए, आपको redis-cli खोलना चाहिए और टाइप करें: KEYS * अधिक सहायता प्राप्त करने के लिए कृपया इस पृष्ठ पर जाएँ: यह लिंक



0

यदि आप लारवेल फ्रेमवर्क का उपयोग कर रहे हैं तो आप बस इसका उपयोग कर सकते हैं:

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

print_r($allKeyList);

कोर PHP में:

$redis = new Redis();

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

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

print_r($allKeyList);

0

आप बस redis-cli का उपयोग करके अपने रेडिस सर्वर से कनेक्ट कर सकते हैं, अपने डेटाबेस का चयन करें और कुंजी टाइप करें *, कृपया याद रखें कि यह आपको चयनित रेडिस डेटाबेस में मौजूद सभी कुंजी देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.