मेरे पास वास्तव में एक काम कर रहे लीडरबोर्ड ऐप है जो रेडिस का उपयोग करता है। आप इसे here देख सकते हैं। मेरे ऐप में लीडर बोर्ड शीर्ष n
स्कोर से सीमित हैं, और पुराने स्कोर होने पर पुराने स्कोर भी बंद हो जाते हैं (इसलिए दिन, सप्ताह, महीना, वर्ष उच्च स्कोर बोर्ड हो सकते हैं)।
वैसे भी, मुझे लगता है कि आप जो करना चाहते हैं वह एक समग्र नेता बोर्ड है, इसलिए कम स्कोर को धक्का दिया जाता है। रेडिस सॉर्टेड सेट स्कोर के अर्थ में, यदि आपने इसे स्थापित किया है तो बहुत अधिक स्कोर रहना चाहिए (वे नीचे हैं) और कम स्कोर छोड़ना चाहिए (वे शीर्ष पर हैं) तो आप कुछ ऐसा करेंगे:
ZREMRANGBYRANK leaderboard 0 -100
यह उदाहरण मानता है कि आप पिछले 100 स्कोर रखना चाहते हैं।
शायद आप स्कोर को उलटा कर सकते हैं, इसलिए 1000 का "उच्च स्कोर" लाल रंग में -1000 के रूप में संग्रहीत किया जाता है, इसलिए इसका क्रमबद्ध क्रम में पहला होता है। उस मामले में यह ऊपर के रूप में ही होगा, लेकिन ZREMRANGEBYRANK 100 -1
उपयोग करने के बाद पहले 100
अद्यतन सभी आइटम हटाना: एहसास है ZREMRANGEBYRANK
तो मेरे उदाहरण सरलीकृत।
आपके प्रस्तावित समाधान को भी काम करना चाहिए। आप nth
तत्व का स्कोर पता लगाना चाहते हैं, तो आप इस का उपयोग कर सकते हैं:
hundredth_entry = ZRANGE leaderboard 100 100
hundredth_score = ZSCORE leaderboard hundredth_entry
ZREMRANGEBYSCORE leaderboard -inf (hundredth_score
(
है सीमा नहीं समावेशी बनाने के लिए है, तो कुछ भी सौवां स्कोर की तुलना में कम से हटा दिया जाएगा, लेकिन नहीं सौवां स्कोर अपने आप।
स्रोत
2012-10-11 20:05:34