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

रेडिस पॉप सूची आइटम आइटम की संख्या के अनुसार

मुझे लगता है कि आप कतार . पर काम कर रहे हैं , जहां आप एक ही स्थान पर 1000 आइटम सम्मिलित करते हैं और उन्हें एक से अधिक स्थानों पर पुनः प्राप्त करते हैं उस क्रम में जिस क्रम में इसे डाला जाता है .

आप इसे एक कमांड से हासिल नहीं कर सकते हैं लेकिन आप इसे 2 कमांड के साथ कर सकते हैं। आप उन्हें परमाणु बनाने के लिए एक लुआ लिपि लिख सकते हैं।

रेंज:http://redis.io/commands/lrange

Lrange list -100 -1

यह आपको सूची में पहले 100 तत्वों की सूची देगा। यहां ऑफसेट -100 है। ध्यान दें कि यह आइटम को विपरीत क्रम में वापस कर देगा जिस पर इसे डाला गया है। तो आपको कतार तंत्र को सुनिश्चित करने के लिए लूप को उलटने की जरूरत है।

एलट्रिम:http://redis.io/commands/ltrim

ltrim list 0 -101

यह सूची में पहले 100 तत्वों को ट्रिम कर देगा। यहाँ 101 n+1 है इसलिए यह 101 होना चाहिए। यहाँ ऑफ़सेट 101 है

उन्हें लुआ ब्लॉक के अंदर लिखना आपको परमाणुता सुनिश्चित करेगा।

मैं आपको एक सरल उदाहरण देता हूं।

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

आप एक ही स्थान पर 100 तत्व सम्मिलित करते हैं।

lpush list 1 2 3 .. 100
<ब्लॉकक्वॉट>

आपके पास इस लुआ ब्लॉक तक पहुंचने का प्रयास करने वाले प्रत्येक ग्राहक हैं। मान लें कि आपका n मान यहां 5 है। पहला ग्राहक प्रवेश करता है और पहले 5 तत्व सम्मिलित करता है।

127.0.0.1:6379> lrange list -5 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
<ब्लॉकक्वॉट>

आप उन्हें अपने लुआ ऑब्जेक्ट में रखें और उन्हें हटा दें।

127.0.0.1:6379> LTRIM list 0 -6
OK

उन्हें अपने कोड पर वापस कर दें, अब आप जो परिणाम चाहते हैं वह 1 2 3 4 5 है लेकिन आपको जो मिला है वह 5 4 3 2 1 है। इसलिए आपको लूप को उलटने और ऑपरेशन करने की आवश्यकता है।

जब अगला क्लाइंट इसमें आएगा तो उसे मूल्यों का अगला सेट मिलेगा।

127.0.0.1:6379> lrange list -5 -1
1) "10"
2) "9"
3) "8"
4) "7"
5) "6"

इस तरह आप अपनी आवश्यकता को प्राप्त कर सकते हैं। उम्मीद है ये मदद करेगा।

संपादित करें:

लुआ लिपि:

local result = redis.call('lrange', 'list','-5','-1')
redis.call('ltrim','list','0','-6')
return result


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. रेडिस दो सूचियों के बीच भिन्न है?

  2. रेडिस सिंगल थ्रेडेड क्यों है (घटना संचालित)

  3. मैक ओएसएक्स पर रेडिस को अनइंस्टॉल करें। अद्यतन स्थापित करने के बाद पुराना संस्करण चल रहा है

  4. रेडिस से/डेटाटेबल को क्रमबद्ध/deserialize करने का सबसे अधिक समय प्रभावी तरीका क्या है?

  5. अजवाइन श्रमिकों के लिए गपशप, मिलना-जुलना और दिल की धड़कन को अक्षम करने के क्या परिणाम हैं?