/**
* 有序集合添加
*
* @param key
* @param value
* @param scoure
*/
public void zAdd(String key, Object value, double scoure) {
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
zset.add(key, value, scoure);
}
/**
* 有序集合获取
*
* @param key
* @param scoure
* @param scoure1
* @return
*/
public Set<Object> rangeByScore(String key, double scoure, double scoure1) {
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
return zset.rangeByScore(key, scoure, scoure1);
}
public void zSet(String key,Object value,double source){
ZSetOperations<String,Object> zset = redisTemplate.opsForZSet();
zset.add(key,value,source);
}
/**
* 倒序获取
* @param key
* @return
*/
public Set<Object> revrange(String key){
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
return zset.reverseRange(key, new Long(0), new Long(-1));
}
/**
* 置顶
* @param key
* @param value
*/
public void zTop(String key,Object value){
ZSetOperations<String,Object> zset = redisTemplate.opsForZSet();
zset.add(key,value,zset.score(key,new ArrayList<>(zset.reverseRange(key,new Long(0),new Long(-1))).get(0))+1);
}
/**
* 上调
* @param key
* @param value
*/
public boolean upSet(String key,Object value){
ZSetOperations<String,Object> zset = redisTemplate.opsForZSet();
List<Object> data = new ArrayList<>(zset.range(key,new Long(0),new Long(-1)));
if(data==null || data.size() ==0) {
return false;
}
//需要调整的score
Double lessScore = zset.score(key,value);
//需要调整的上一位
Object thanObject = data.get(data.indexOf(value)+1);
//需要调整的上一位的score
Double thanScore = zset.score(key,thanObject);
//将需要调整的往上调一位
zset.add(key,value,thanScore);
//将原来的往下调
zset.add(key,thanObject,lessScore);
return true;
}
/**
* 下调
* @return
*/
public boolean downSet(String key,Object value){
ZSetOperations<String,Object> zset = redisTemplate.opsForZSet();
List<Object> data = new ArrayList<>(zset.range(key,new Long(0),new Long(-1)));
if(data==null || data.size() ==0) {
return false;
}
//需要调整的score
Double thanScore = zset.score(key,value);
//需要调整的上一位
Object thanObject = data.get(data.indexOf(value)-1);
//需要调整的上一位的score
Double lessScore = zset.score(key,thanObject);
//将需要调整的往上调一位
zset.add(key,value,lessScore);
//将原来的往下调
zset.add(key,thanObject,thanScore);
return true;
}
Redist-Java 有序列表操作
最新推荐文章于 2023-06-09 14:24:10 发布