1.业务背景
因公司业务需要,要实现某段时间内的实时榜单。如果实时count mysql数据库,用户流量一大,数据库肯定承受不住,而恰好redis提供了有序集合这个数据类型。
2.代码实践
1.Redis工具类
@Component
public class RedisComponent {
@Autowired
private StringRedisTemplate redisTemplate;
/**
* 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd
*
* @param key
* @param value
* @param score
*/
public void add(String key, String value, double score) {
redisTemplate.opsForZSet().add(key, value, score);
}
/**
* 删除元素 zrem
*
* @param key
* @param value
*/
public void remove(String key, String value) {
redisTemplate.opsForZSet().remove(key, value);
}
/**
* score的增加or减少 zincrby
*
* @param key
* @param value
* @param score
*/
public Double incrScore(String key, String value, double score) {
return redisTemplate.opsForZSet().incrementScore(key, value, score);
}
/**
* 查询value对应的score zscore
*
* @param key
* @param value
* @return
*/
public Double score(String key, String value) {
return redisTemplate.opsForZSet().score(key, value);
}
/**
* 判断value在zset中的排名 zrank
*
* 积分小的在前面
*
* @param key
* @param value

该博客介绍了如何利用Redis的有序集合解决高并发场景下的实时榜单问题,以避免对MySQL数据库的压力。博主通过代码实践展示了如何操作Redis有序集合,包括创建、存储和查询排名,确保最小的score对应最高的排名。
最低0.47元/天 解锁文章
4186

被折叠的 条评论
为什么被折叠?



