जब मैं अपने रेडिस संग्रह में कोई बदलाव करता हूं तो मैं कॉलबैक चलाने में सक्षम होना चाहता हूं। कॉलबैक इनपुट के रूप में कुंजी और मूल्य ले जाएगा। क्या ऐसा कुछ संभव है?Redis में बदलाव के लिए सुनो?
धन्यवाद?
जब मैं अपने रेडिस संग्रह में कोई बदलाव करता हूं तो मैं कॉलबैक चलाने में सक्षम होना चाहता हूं। कॉलबैक इनपुट के रूप में कुंजी और मूल्य ले जाएगा। क्या ऐसा कुछ संभव है?Redis में बदलाव के लिए सुनो?
धन्यवाद?
तुम भी एक दास सिंक आदेश का उपयोग कर की तरह Redis सर्वर से कनेक्ट कर सकते हैं। त्वरित परिचय के लिए Redis Replication Works? कैसे देखें।
सिंक आदेश के उत्पादन में दो चरणों है। पहले चरण में, सर्वर डेटाबेस dump.rdb फ़ाइल देता है। एक बार फ़ाइल भेजी जाने के बाद, यह रेडिस प्रोटोकॉल में कमांड भेजना शुरू कर देता है, जो कि एओएफ प्रारूप भी है।
यहाँ आप क्या कर सकते हैं के उच्च स्तर तस्वीर है:
SYNC
आदेशयह बहुत काम लगता आह्वान है, लेकिन आप बहुत आसानी से इस हैक करने में सक्षम होना चाहिए। और यह भी एक अच्छी ओपन सोर्स लाइब्रेरी बना देगा!
संपादित करें: सिंक v/s मॉनिटर
Monitor
एक डिबगिंग आदेश है। प्रतिक्रिया प्रारूप समय के साथ (डी) बदल सकता है (डी)। Sync
मास्टर के लिए प्रयोग किया जाता है -> दास प्रतिकृति है, और इसलिए बेहतर समर्थन किया जाएगाMonitor
सभी आदेशों का उत्सर्जन करेंगे, जिनमें केवल पढ़ने के लिए आदेश देता है। Sync
केवल आपको आदेश देगा जो डेटा को संशोधित करेगा।Monitor
व्यक्ति आदेशों एक lua स्क्रिप्ट के भीतर क्रियान्वित कर रहे हैं प्रवेश करेंगे।Sync
केवल पूरे लुआ स्क्रिप्ट को स्थानांतरित करेगा, इसलिए आपको स्क्रिप्ट को स्वयं पार्स करना होगा। यह वास्तव में sync
के लिए एक सौदा ब्रेकर है।Monitor
उन आदेशों को लॉग करेगा जो सफल नहीं हुए, Sync
केवल डेटा को संशोधित करने वाले आदेशों को लॉग करेगा। उदाहरण के लिए, कमांड del non-existing-key
मॉनीटर द्वारा लॉग किया जाएगा लेकिन जब आप सिंक चलाते हैं तो दिखाई नहीं देंगे।धन्यवाद श्रीपति! क्या आप मुझे अपडेट के लिए मॉनिटर का उपयोग कर बनाम इस का एक उच्च स्तरीय अवलोकन दे सकते हैं? – fancy
@fancy मेरे उत्तर के अपडेट देखें –
दो विकल्प:
उपयोग MONITOR
आदेश - यह हर आदेश है कि Redis के लिए हो जाता है निशान और आप का विश्लेषण और यह देखने के अपने संग्रह को छुआ जा रहा है कर सकते हैं।
आप "के मालिक हैं" कोड है कि संग्रह के लिए लिखते हैं, अपने अन्य कोड (अपने कॉलबैक) का संकेत है। इसके लिए आप Redis Pub/Sub चैनल का उपयोग कर सकते हैं।
संपादित Redis वास्तव में संस्करण 2.8 में इस सुविधा को लागू करने जा रहा है। एंटीरेज़ के ब्लॉग पोस्ट को इस पर देखें: Redis keyspace changes notification system।
@fancy मेरा उत्तर के अद्यतन देखने –
संक्षिप्त उत्तर - नहीं।
थोड़ा लंबा जवाब - आप यह कर केवल यदि आप अपने ग्राहक में redis पबसब में किसी विशिष्ट चैनल को प्रकाशित करने जोड़ सकते हैं। या उपयोगकर्ता मॉनिटर रेडिस में जो कुछ भी चल रहा है उसे पार्स करने के लिए, लेकिन अगर वह प्रक्रिया रेडिस से कनेक्शन खो देती है - तो आप खराब हो जाते हैं।
<dependency>
<groupId>com.moilioncircle</groupId>
<artifactId>redis-replicator</artifactId>
<version>2.5.0</version>
</dependency>
आप जावा का उपयोग कर रहे हैं। redis-replicator
रेडिस प्रतिकृति प्रोटोकॉल लागू करता है। अधिक जानकारी references
का संदर्भ लें 2017
में अब एक प्रकाशित करें/सदस्यता लें व्यवस्था है जिसके आप node-redis
मॉड्यूल के साथ उपयोग कर सकते हैं। विशिष्ट दस्तावेज HERE देखें। (परीक्षण के लिए redis-mock
के साथ भी काम करता है)
आपके पास एक ही चैनल में कई ग्राहक (श्रोताओं) हो सकते हैं, जो आपके मामले में आपके संग्रह की कुंजी होगी।
त्वरित नमूना: (कार्यान्वयन विवरण के लिए दस्तावेज़ ऊपर देखें)
sub.subscribe('myCollection');
sub.on('message', (channel, data) => {
// this is the callback you talked about
console.log(`${channel} is now ${data}`);
});
// ... later on ...
pub.publish('myCollection', [1,2,3])
// console will output:
// myCollection is now [1,2,3]
संबंधित सुविधा का अनुरोध: https://github.com/antirez/redis/issues/83 –