【Redis最佳实践】使用DCS Redis实现排行榜功能

本文通过实例展示了如何利用华为云DCS Redis服务实现网页和APP中的排行榜功能,详细介绍了从场景介绍、代码示例到实践指导的全过程。在高并发场景下,Redis的高速读写能力和多种数据结构能有效解决传统数据库的性能瓶颈。
摘要由CSDN通过智能技术生成

本节基于华为云DCS Redis实践所编写,用于指导您在以下场景使用DCS Redis实现排行榜功能。

目录

场景介绍

代码示例

实践指导

运行结果

华为云DCS Redis介绍


场景介绍

在网页和APP中常常需要用到榜单的功能,对某个key-value的列表进行降序显示。当操作和查询并发大的时候,使用传统数据库就会遇到性能瓶颈,造成较大的时延。

使用分布式缓存服务(DCS)的Redis版本,可以实现一个商品热销排行榜的功能。它的优势在于:

  • 数据保存在缓存中,读写速度非常快。

  • 提供字符串(String)、链表(List)、集合(Set)、哈希(Hash)等多种数据结构类型的存储。


代码示例

package dcsDemo02;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Tuple;

public class productSalesRankDemo {
    static final int PRODUCT_KINDS = 30;

    public static void main(String[] args) {
        //实例连接地址,从控制台获取
        String host = "192.168.0.246";
        //Redis端口
        int port = 6379;

        Jedis jedisClient = new Jedis(host, port);

        try {
            //实例密码
            String authMsg = jedisClient.auth("Demo@123");
            if (!authMsg.equals("OK")) {
                System.out.println("AUTH FAILED: " + authMsg);
            }

            //键
            String key = "商品热销排行榜";

            jedisClient.del(key);

            //随机生成产品数据
            List<String> productList = new ArrayList<>();
            for(int i = 0; i < PRODUCT_KINDS; i ++) {
                productList.add("product-" + UUID.randomUUID().toString());
            }

            //随机生成销量
            for(int i = 0; i < productList.size(); i ++) {
                int sales = (int)(Math.random() * 20000);
                String product = productList.get(i);
                //插入Redis的SortedSet中
                jedisClient.zadd(key, sales, product);
            }

            System.out.println();
            System.out.println("                   "+key);

            //获取所有列表并按销量顺序输出
            Set<Tuple> sortedProductList = jedisClient.zrevrangeWithScores(key, 0, -1);
            for(Tuple product : sortedProductList) {
                System.out.println("产品ID: " + product.getElement() + ", 销量: " 
                        + Double.valueOf(product.getScore()).intValue());
            }

            System.out.println();
            System.out.println("                   "+key);
            System.out.println("                   前五大热销产品");

            //获取销量前五列表并输出
            Set<Tuple> sortedTopList = jedisClient.zrevrangeWithScores(key, 0, 4);
            for(Tuple product : sortedTopList) {
                System.out.println("产品ID: " + product.getElement() + ", 销量: " 
                        + Double.valueOf(product.getScore()).intValue());
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            jedisClient.quit();
            jedisClient.close();
        }
    }

}

实践指导

  • 准备一台弹性云服务器(ECS),选择Windows系统类型。

  • 在ECS上安装JDK1.8以上版本和Eclipse,下载jedis客户端(点此处直接下载jar包)。

  • 在华为云控制台购买DCS Redis缓存实例。注意和ECS选择相同虚拟私有云、子网以及安全组。

  • 在ECS上运行Eclipse,创建一个java工程,为示例代码创建一个productSalesRankDemo.java文件,并将jedis客户端作为library引用到工程中。

  • 将DCS缓存实例的连接地址、端口以及连接密码配置到示例代码文件中。

  • 编译并运行得到结果。


运行结果

编译并运行以上Demo程序,结果如下:

 商品热销排行榜
产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433
产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334
产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196
产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870
产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842
产品ID: product-d0c364e0-66ec-48a8-9ac9-4fb58adfd033, 销量: 17782
产品ID: product-5e406bbf-47c7-44a9-965e-e1e9b62ed1cc, 销量: 17093
产品ID: product-0c4d31ee-bb15-4c88-b319-a69f74e3c493, 销量: 16432
产品ID: product-a986e3a4-4023-4e00-8104-db97e459f958, 销量: 16380
产品ID: product-a3ac9738-bed2-4a9c-b96a-d8511ae7f03a, 销量: 15305
产品ID: product-6b8ad4b7-e134-480f-b3ae-3d35d242cb53, 销量: 14534
产品ID: product-26a9b41b-96b1-4de0-932b-f78d95d55b2d, 销量: 11417
产品ID: product-1f043255-a1f9-40a0-b48b-f40a81d07e0e, 销量: 10875
产品ID: product-c8fee24c-d601-4e0e-9d18-046a65e59835, 销量: 10521
产品ID: product-5869622b-1894-4702-b750-d76ff4b29163, 销量: 10271
产品ID: product-ff0317d2-d7be-4021-9d25-1f997d622768, 销量: 9909
产品ID: product-da254e81-6dec-4c76-928d-9a879a11ed8d, 销量: 9504
产品ID: product-fa976c02-b175-4e82-b53a-8c0df96fe877, 销量: 8630
产品ID: product-0624a180-4914-46b9-84d0-9dfbbdaa0da2, 销量: 8405
产品ID: product-d0079955-eaea-47b2-845f-5ff05a110a70, 销量: 7930
产品ID: product-a53145ef-1db9-4c4d-a029-9324e7f728fe, 销量: 7429
产品ID: product-9b1a1fd1-7c3b-4ae8-9fd3-ab6a0bf71cae, 销量: 5944
产品ID: product-cf894aee-c1cb-425e-a644-87ff06485eb7, 销量: 5252
产品ID: product-8bd78ba8-f2c4-4e5e-b393-60aa738eceae, 销量: 4903
产品ID: product-89b64402-c624-4cf1-8532-ae1b4ec4cabc, 销量: 4527
产品ID: product-98b85168-9226-43d9-b3cf-ef84e1c3d75f, 销量: 3095
产品ID: product-0dda314f-22a7-464b-ab8c-2f8f00823a39, 销量: 2425
产品ID: product-de7eb085-9435-4924-b6fa-9e9fe552d5a7, 销量: 1694
产品ID: product-9beadc07-aab0-438c-ac5e-bcc72b9d9c36, 销量: 1135
产品ID: product-43834316-4aca-4fb2-8d2d-c768513015c5, 销量: 256

            商品热销排行榜
            前五大热销产品
产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433
产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334
产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196
产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870
产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842

华为云DCS Redis介绍

目前,华为云DCS Redis有免费使用活动,小伙伴们可以来试试:

DCS推广图片.PNG

进一步了解Redis相关内容,请联系中间件小哥。

中间件小哥二维码.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值