redis実装検索ランキング後記

1123 ワード

以前redis実装検索ランキングを書いた記事を覚えていますが、今日redisをテストしたとき、その中のバグを見つけました.
検索ランキングを集計するときはjedisを使います.zrevrange()メソッドではscore降順に並べて結果を得ることはできません
Set set=jedis.zrevrange("sort", 0, 6);

zrevrangeWithScores(String key,long start,long end)で取得するべきです
簡単な例は次のとおりです.
public  Map zrevrangeWithScores(String key,long start,long end){
		Jedis jedis = getJedisPool().getResource();
		Map map=new LinkedHashMap();
		try {
 
			Set tuples=  jedis.zrevrangeWithScores(key, start, end);
			if(tuples==null ){
				return map;
			}
			for(Tuple tuple : tuples){
				double score=tuple.getScore();
				String member=tuple.getElement();
				map.put(member, score);
			}
		} finally {
			  /// ... it's important to return the Jedis instance to the pool once you've finished using it
			getJedisPool().returnResource(jedis);
		}
			/// ... when closing your application:
		//getJedisPool().destroy(); 
		return map;
	}

//備考:結果はLinkedHashMapが格納する必要があります.これにより、ランキングの1位が1位に格納されることが保証されます.このように推す.