Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

जेडिस के साथ रेडिस की की समाप्ति अधिसूचना

आप इसे पब-सब . के साथ कर सकते हैं केवल मॉडल रेडिस सर्वर प्रारंभ करें

redis.conf में सूचित-कीस्पेस-ईवेंट को KEA में बदलें (यह आपकी आवश्यकता पर निर्भर करता है)। redis दस्तावेज़ीकरण में दिए गए विवरण http://redis.io/topics/notifications.

रेडिस जावा क्लाइंट (जेडिस), निम्नलिखित का प्रयास करें:

सूचना श्रोता:

public class KeyExpiredListener extends JedisPubSub {

@Override
    public void onPSubscribe(String pattern, int subscribedChannels) {
        System.out.println("onPSubscribe "
                + pattern + " " + subscribedChannels);
    }

@Override
    public void onPMessage(String pattern, String channel, String message) {

        System.out
                .println("onPMessage pattern "
                        + pattern + " " + channel + " " + message);
    }

//add other Unimplemented methods


}

सदस्य:

****नोट** जेडिस।सब्सक्राइब करें (नया KeyExpiredListener (), "__key*__:*"); -- यह विधियां रेगेक्स पैटर्न आधारित चैनल का समर्थन करती हैं जबकि जेडिस।सदस्यता लें (नया KeyExpiredListener(), ""[email protected]__:notify"); -- यह विधि पूर्ण/सटीक चैनल नाम लेती है

public class Subscriber {

    public static void main(String[] args) {
        JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

        Jedis jedis = pool.getResource();
        jedis.psubscribe(new KeyExpiredListener(), "__key*__:*");

    }

}

टेस्ट क्लास:

public class TestJedis {

    public static void main(String[] args) {
        JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost");

        Jedis jedis = pool.getResource();
        jedis.set("notify", "umq");
        jedis.expire("notify", 10);

    }
}

अब पहले अपना सब्सक्राइबर शुरू करें और फिर टेस्टजेडिस चलाएं। आपको निम्न आउटपुट दिखाई देगा:

onPSubscribe __key*__:* 1
onPMessage pattern __key*__:* [email protected]__:notify set
onPMessage pattern __key*__:* [email protected]__:set notify
onPMessage pattern __key*__:* [email protected]__:notify expire
onPMessage pattern __key*__:* [email protected]__:expire notify
onPMessage pattern __key*__:* [email protected]__:notify expired
onPMessage pattern __key*__:* [email protected]__:expired notify

अब एक उपयोग-मामला जहां आप मान में रुचि रखते हैं समय सीमा समाप्त कुंजी की भी।

नोट: रेडिस केवल कीस्पेस घटनाओं की अधिसूचना के माध्यम से कुंजी की समाप्ति पर कुंजी प्रदान करता है, कुंजी समाप्त होने के बाद मूल्य खो जाता है। अपनी कुंजी की समय सीमा समाप्त होने पर मूल्य प्राप्त करने के लिए आप छाया कुंजी की ट्रिकी अवधारणा के साथ नीचे दिखाए गए निम्नलिखित कार्य कर सकते हैं:

जब आप अपनी सूचना कुंजी बनाते हैं, तो एक विशेष समय सीमा समाप्त होने वाली "छाया" कुंजी भी बनाएं (वास्तविक सूचना की समय सीमा समाप्त न करें)। उदाहरण के लिए:

// set your key value
SET notify umq 
//set your "shadow" key, note the value here is irrelevant
SET shadowkey:notify "" EX 10 

// चैनल में एक समाप्ति संदेश प्राप्त करें [email protected] :समाप्त// कुंजी को ":" (या जो भी विभाजक आप उपयोग करने का निर्णय लेते हैं) पर विभाजित करें, अपनी मूल कुंजी प्राप्त करने के लिए दूसरा भाग लें

// Then get the value and do whatever with it
GET notify
// Then delete the key
DEL notify

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

नहीं तो आपको अपनी चाबी इस तरह से तैयार करनी होगी कि उसमें इसके साथ संलग्न मूल्य शामिल हो।

आशा है कि यह आपकी मदद करेगा!



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. पायथन रेडिस कतार ValueError:__main__ मॉड्यूल के कार्यों को श्रमिकों द्वारा संसाधित नहीं किया जा सकता है

  2. रेडिस में कई हैश प्राप्त करने का सबसे प्रभावी तरीका?

  3. रेडिस वैल्यू अपडेट

  4. रेडिस पब सब-मैक्स सब्सक्राइबर और पब्लिशर्स

  5. Redis . में थोक निगलना