RedisTemplate的2种使用方法以及修改序列化方式以及其他的常用操作
程序员文章站
2022-05-05 21:45:11
...
/先去redis缓存中获取该,有:直接使用,没有:去数据库查询并存放到redis缓存中
//修改key值的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
//获取操作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);
}
return historyAverageRate;
1> redis 的 increment的用法。
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
@Override
public Long getOnlyNumber() {
return redisTemplate.opsForValue().increment(Constants.ONLY_NUMBER,1);
}
2> ZSet()的 reverseRangeWithScores 分数倒序的操作。
@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;
}
3> zset 的 incrementScore
//将用户的投资金额存放到redis缓存中
redisTemplate.opsForZSet().incrementScore(Constants.INVEST_TOP, phone,(Double) paramMap.get("bidMoney"));
上一篇: ThreadLocal内存泄漏原因