2013-03-28 9 views
10

कहें कि मैं 10 सबसे हालिया जोड़ों को एक रेडिस सॉर्टेड सेट में स्टोर करना चाहता हूं जहां 11 वां जोड़ा सूची से पहले 1 को धक्का देता है। और जब तक यह 10 आइटम तक नहीं पहुंच जाता है, यह सामान्य रूप से बढ़ता है।क्या रेडिस सॉर्ट किए गए सेट पर सदस्यों को सीमित करने का कोई तरीका है?

क्या मुझे प्रत्येक जोड़ पर लंबाई की जांच करनी है और पहला तत्व हटा देना है?

उत्तर

9

मुझे नहीं लगता कि आप इसे अपने आप को सीमित रखने के लिए लंबाई की जांच करने के लिए है, लेकिन है की जरूरत है:

ZREMRANGEBYRANK [KEY] 0 -10

+2

zset में 10 उच्चतम अंक प्राप्त मूल्यों रखने के लिए के रूप में ओ पी से पूछा, आप ' डी '0 -11' का उपयोग करने की आवश्यकता है क्योंकि रेडिस श्रेणियां समावेशी हैं। – Erhhung

1

आप इस आदेश का उपयोग कर सकते हैं अगर आप सिर्फ ZSet में पहले सदस्य को हटाने की जरूरत:

ZREMRANGEBYRANK key 0 0 

आप कर सकते हैं ZSet में पहले सदस्य स्कोर 1 के साथ ZADD का उपयोग कर के रूप में भी तरह 11 वीं तत्व:

ZADD key 1 member 

पूर्व:

redis 127.0.0.1:6379> ZADD myzset 1 एक
(पूर्णांक) 1
redis 127.0.0.1:6379> ZADD myzset 1 दो
(पूर्णांक) 1
redis 127.0.0.1:6379> ZRANGE myzset 0 -1 withscores
1) "एक"
2) "1"
3) "दो"
4) "1"
redis 1 27.0.0.1:6379> ZREMRANGEBYRANK myzset 0 0
(पूर्णांक) 1
redis 127.0.0.1:6379> ZADD myzset 1 तीन
(पूर्णांक) 1
redis 127.0.0.1:6379> ZRANGE myzset 0 -1 withscores
1) "तीन"
2) "1"
3) "दो"
4) "1"

संबंधित मुद्दे

 संबंधित मुद्दे