redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。
不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的
成员进行从小到大的排序。
3.5.1 基本命令
A 、 zadd
语法:zadd key score member [score member…]
作用:将一个或多个 member 元素及其 score 值加入到有序集合 key 中,如果 member
存在集合中,则更新值;score 可以是整数或浮点数
返回值:数字,新添加的元素个数
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
//将用户的投资金额存放到redis缓存中
redisTemplate.opsForZSet().incrementScore(Constants.INVEST_TOP, phone,(Double) paramMap.get("bidMoney"));
//循环遍历redis缓存中zset数据
@Override
public List<BidUserTop> queryBidUserTop() {
List<BidUserTop> bidUserTopList = new ArrayList<BidUserTop>();
// 取缓存中数据
Set<ZSetOperations.TypedTuple<Object>> typedTuples = redisTemplate.opsForZSet().reverseRangeWithScores(Constants.INVEST_TOP, 0, 9);
Iterator<ZSetOperations.TypedTuple<Object>> iterator = typedTuples.iterator();
while (iterator.hasNext()) {
ZSetOperations.TypedTuple<Object> next = iterator.next();
String phone = (String) next.getValue();
Double score = next.getScore();
BidUserTop bidUserTop = new BidUserTop();
bidUserTop.setPhone(phone);
bidUserTop.setScore(score);
bidUserTopList.add(bidUserTop);
}
return bidUserTopList;
}
//获取操作key=value的数据类型的redis的操作对象,并获取指定key的value值
Double historyAverageRate = (Double) redisTemplate.opsForValue().get(Constants.HISTORY_AVERAGE_RATE);
//判断是否有值
if (null == historyAverageRate) {
//没有值:去数据库查询
historyAverageRate = loanInfoMapper.selectHistoryAverageRate();
//将该值存放到redis缓存中
redisTemplate.opsForValue().set(Constants.HISTORY_AVERAGE_RATE,historyAverageRate,15, TimeUnit.SECONDS);
}