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

रेडिस स्ट्रीम के लिए टीटीएल को कैसे परिभाषित करें?

टीटीएल/आयु के आधार पर पुरानी प्रविष्टियों को हटाने का कोई सीधा तरीका नहीं है। आप XTRIM/XDEL . के संयोजन का उपयोग कर सकते हैं स्ट्रीम को ट्रिम करने के लिए अन्य कमांड के साथ।

आइए देखें कि हम XTRIM का उपयोग कैसे कर सकते हैं

XTRIM स्ट्रीम MAXLEN ~ SIZE

<ब्लॉकक्वॉट>

XTRIM किसी दिए गए आइटम की संख्या में स्ट्रीम को ट्रिम कर देता है, यदि आवश्यक हो तो पुराने आइटम (कम आईडी वाले आइटम) को निकाल देता है।

आप अपनी डिलीट पॉलिसी के आधार पर हर दिन या समय-समय पर स्ट्रीम साइज जेनरेट करते हैं और इसे XLEN का उपयोग करके कहीं स्टोर करते हैं। आदेश

एक आवधिक कार्य चलाएं जो XTRIM को इस रूप में बुलाएगा

XTRIM x-stream MAXLEN ~ (NEW_SIZE - PREVIOUS_SIZE)

उदाहरण के लिए, कल स्ट्रीम का आकार 500 था अब यह 600 है तो हमें 500 प्रविष्टियों को हटाना होगा ताकि हम बस चला सकें

XTRIM x-stream MAXLEN ~ 100

आप हटाने के लिए विभिन्न नीतियों का उपयोग कर सकते हैं उदाहरण के लिए दैनिक, साप्ताहिक, सप्ताह में दो बार, आदि।

XDEL स्ट्रीम आईडी [आईडी...]

<ब्लॉकक्वॉट>

एक स्ट्रीम से निर्दिष्ट प्रविष्टियों को हटाता है, और हटाए गए प्रविष्टियों की संख्या लौटाता है, जो कुछ आईडी मौजूद नहीं होने की स्थिति में कमांड को पास की गई आईडी की संख्या से भिन्न हो सकती है।

तो आप क्या कर सकते हैं जब भी सेवा बी घटना का उपभोग करता है, सेवा स्वयं स्ट्रीम प्रविष्टि को हटा सकती है क्योंकि सेवा बी स्ट्रीम आईडी जानता है, लेकिन जैसे ही आप उपभोक्ता समूह का उपयोग शुरू करते हैं, यह काम नहीं करेगा। तो मैं कहूंगा कि रिडीस सेट या रेडिस मैप का उपयोग पावती स्ट्रीम आईडी को ट्रैक करने के लिए करें और स्ट्रीम को साफ करने के लिए समय-समय पर स्वीप जॉब चलाएं।

उदाहरण के लिए

सेवा A, सेवा को ID1 के साथ एक स्ट्रीम आइटम भेजता है BService B, mapack_stream ={ID1:true} में आइटम का उपभोग करने के बाद स्ट्रीम आइटम को स्वीकार करता है, आप अन्य डेटा को ट्रैक कर सकते हैं जैसे उपभोक्ता समूह के मामले में गिनती।

स्वीप कार्य समय-समय पर प्रतिदिन 1 AM की तरह चलता है जो ack_stream के सभी तत्वों को पढ़ता है और उन सभी वस्तुओं को फ़िल्टर करता है जिन्हें हटाने की आवश्यकता होती है। अब आप XDEL . पर कॉल कर सकते हैं स्ट्रीम आईडी के सेट के साथ बैच में कमांड।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. RedisTemplate को ऑटोवायर कैसे किया जाता है<स्ट्रिंग,लॉन्ग>

  2. जब मेरे पास Django के लिए मेरे डेटाबेस के रूप में PostgreSQL है तो मुझे Redis का उपयोग क्यों करना चाहिए?

  3. स्प्रिंग 4 में एक सामान्य RedisTemplate को सुखाना

  4. अद्वितीय परमाणु आईडी जनरेटर के रूप में रेडिस - दौड़ की स्थिति से बचने के लिए वेब ऐप के लिए थ्रेड सुरक्षित तरीका

  5. क्या REDIS में स्कैन/HSCAN कमांड के लिए COUNT का कोई अनुशंसित मान है?