月眸


redis实现排行榜效果

毛毛小妖 2019-12-27 700浏览 0条评论
首页/正文
分享到: / / / /

现在的互联网应用基本都有排行榜这个功能,现在就用java + redis来实现一下吧。

先看一下效果:

引入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.7.3</version>
</dependency>

开发思路

1.页面上点击一次购买按钮,则对该手机的销量加 1,同时将销售动态添加到队列当中

jedis.zincrby(Constants.SALES_LIST, 1, String.valueOf(phoneId));
jedis.lpush(Constants.BUY_DYNAMIC, msg);

2.获得排行榜

// 按照scope升序排名,取出前五
jedis.zrevrangeWithScores(Constants.SALES_LIST, 0, 4);

3.获得指定手机的排名情况

jedis.zrevrank(Constants.SALES_LIST, String.valueOf(phoneId));

4.获得销售动态,此处只取 3 条,同时队列只保存最新的 20 条动态

List<DynamicVO> dynamicList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
        String result = jedis.lindex(Constants.BUY_DYNAMIC, i);
        if (StringUtils.isEmpty(result)) {
            break;
        }
        String[] arr = result.split(Constants.separator);
        long time = Long.valueOf(arr[0]);
        String phone = arr[1];
        DynamicVO vo = new DynamicVO();
        vo.setPhone(phone);
        vo.setTime(StringUtil.showTime(new Date(time)));
        dynamicList.add(vo);
}
jedis.ltrim(Constants.BUY_DYNAMIC, 0, 19);

源码分享

https://github.com/eyesmoons/RedisListExample

最后修改:2019-12-27 16:01:37 © 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

上一篇
登录即可评论哦~

评论列表

还没有人评论哦~赶快抢占沙发吧~