redis的ZSet使用
最近项目中搜索功能中,有搜索热词(搜索量前10)需求,准备用redis的zset来解决
下面列出核心用到的几个方法
插入数据
/**
* 往ZSet塞值
* @param key (ZSet集合的名称)
* @param socre (分数)
* @param member (成员)
* @throws Exception
*/
public void setSortSet(String key ,double socre ,String member ) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.zadd(key,socre,member);
//jedis.z
} catch(Exception e) {
//做自己的业务异常处理
} finally {
//返还到连接池
jedis.close();
}
}
对原先成员进行加的操作
/**
* 对member增加score
* @param key
* @param socre
* @param member
* @return
*/
public Double setSortSetIncr(String key ,double socre ,String member ) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.zincrby(key,socre,member);
} catch(Exception e) {
//做自己的业务异常处理
} finally {
//返还到连接池
jedis.close();
}
}
查询key指定排名的member
/**
* 查询key指定排名的member
* @param key
* @param start
* @param end
* @return
*/
public Set<String> getSortSetTop(String key ,Long start ,Long end ) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
return jedis.zrange(key,start,end);
} catch(Exception e) {
//做自己的业务异常处理
} finally {
//返还到连接池
jedis.close();
}
}
最后,这里只是对ZSet的部分方法做了说明,项目中使用ZSet的话,还需考虑member的删除情况,不然一直做塞新member的话,肯定会增大redis的压力。