redis实现搜索排行榜后记

记得以前写过一篇文章redis实现搜索排行榜,今天在测试redis的时候,发现了其中的一处bug。

我们再统计搜索排行榜的时候,用jedis.zrevrange()方法是不能按照score降序排列得到结果

Set<String> set=jedis.zrevrange("sort", 0, 6);

应该用zrevrangeWithScores(String key,long start,long end)去获取
简单例子如下:

public  Map<String,Double> zrevrangeWithScores(String key,long start,long end){
		Jedis jedis = getJedisPool().getResource();
		Map<String,Double> map=new LinkedHashMap<String,Double>();
		try {
 
			Set<Tuple> 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去存储。这样可以保证排行榜的第一名存储在第一个位置。以此类推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值