828华为云征文|华为云Flexus X加速Redis案例实践与详解

目录

 前言

一、华为云Flexus X加速Redis购买

1.1 Flexus X实例购买

1.2 Redis加速镜像选择

1.3 重置密码

1.4 登录Flexus X实例

1.5 Flexus X实例Redis验证

二、华为云Flexus X实例Redis配置

2.1 Redis密码修改

2.2 Redis外部访问配置

2.3 开放Redis端口

2.4 第三方工具访问Redis

三、基于Flexus X实例Redis实践

3.1 发红包

3.2 抢红包

总结


 前言

      华为云作为业界领先的云服务提供商,不断推出创新解决方案以满足这些需求。其中,Flexus X实例凭借其高性能和卓越的用户体验,成为了众多企业和个人的首选。特别是其自带的Redis加速镜像,更是为开发者提供了极大的便利。本文将详细介绍如何利用华为云Flexus X实例自带的Redis镜像,快速部署并配置Redis,以及通过实际案例展示其便捷性和高效性。

一、华为云Flexus X加速Redis购买

1.1 Flexus X实例购买

在开始本文的实践之前,需要在华为云官网上购买Flexus X实例,这个一般可以根据自己的实际需求项目选择合适的配置,比如CPU、内存、存储和网络带宽等。

8b5e99e4e6174443bb2d3f7b33dabbd5.png

1.2 Redis加速镜像选择

Flexus X实例强大之处,预装Redis加速镜像的选项,使得开发者在项目部署的时候免去Redis安装,同时主要其X-Turbo加速技术和智能应用调优算法,能够自动优化Redis的性能,减少了手动调优的需求,对于Redis使用频繁的建议选择此镜像。

购买成功后,可以在华为云控制台中看到刚刚购买的Flexus X实例服务器,本文已购买的4核12G的实例,详细配置如下,其中包含Redis加速镜像。

1.3 重置密码

这里需要注意的是,首次购买后,需要重置服务器的登录密码,以便能够远程登录到服务器中。在华为云控制台中,找到Flexus云服务器X实例,点击“重置密码”按钮,然后按照提示设置新的登录密码。

cd2a2ee5f8d244e9af0248cc91adb279.png

1.4 登录Flexus X实例

接下来就可以登录到Flexus云服务器X实例中,进入终端之后,会提示 Welcome to Huawei Cloud Service,说明成功登录。

1.5 Flexus X实例Redis验证

进入Flexus云服务器X实例终端,使用redis-cli命令即可进入Redis容器中,可以看出使用Flexus X实例部署Redis加速镜像,预安装性能优化后的Redis 6.2应用,相对传统服务器安装Redis,开发者不需关心各种安装依赖、编译源码等步骤,简化了Redis的安装和配置过程,降低了技术门槛。

二、华为云Flexus X实例Redis配置

Flexus X实例Redis默认安装配置/etc/redis目录下,可以进入该目录,便可以看到Redis的相关配置在此目录。

2.1 Redis密码修改

华为云Flexus X实例安装Redis默认是空密码的,再实际开发中是十分不安全,所以需要修改 Redis 的密码,使用vim进入 Redis 的配置文件 redis.conf。找到 requirepass 这一行,如果这一行被注释掉了(即前面有一个 # 号),需要去掉这个注释符号,设置新密码。

requirepass 123456

修改完成之后,需要重启Redis才会生效,使用 redis-cli 连接到 Redis 服务器的,使用以下命令重启 Redis,关闭Redis。

redis-cli shutdown

然后重新启动 Redis 服务器。通过 systemctl 管理 Redis 服务的,使用以下命令重启:

sudo systemctl restart redis

此时重置密码之后,在使用redis-cli空密码进入redis容器中,将会提示无权限。

所以必须使用redis-cli及新密码进入镜像登录,进入在Flexus X实例终端查看redis,才能实现set基础操作。

 redis-cli -h 127.0.0.1 -p 6379 -a 123456

2.2 Redis外部访问配置

在实际项目开发中,要允许 Redis 从外部访问,实际项目相对Redis是客户端,设置Redis外部访问的原因主要是为了允许远程客户端连接到Redis服务器,这样才能在工程代码中操作Redis实例,同样进入 Redis 的配置文件 redis.conf。这里需要修改两个配置:

第一个,修改 bind 这一行的内容,使其包含服务器的 IP 地址或 0.0.0.0(表示监听所有可用的网络接口),这里修改为0.0.0.0皆可。

bind 0.0.0.0

第二个,找到 protected-mode 这一行。默认情况下,Redis 的保护模式是开启的,这意味着 Redis 只接受来自本地的连接。将 protected-mode 这一行的值改为 no,以关闭保护模式:

protected-mode no

修改完之后,同样需要重启 Redis 服务器以使更改生效。

2.3 开放Redis端口

在实际开发中,项目通常需要从远程位置连接到Redis服务器,以便进行数据操作和管理,为了实现这一目标,必须配置Flexus X实例的安全组规则,以允许外部访问Redis的默认端口6379。

2.4 第三方工具访问Redis

完成上述端口开放和安全组配置后,第三方工具就可以使用修改后的密码重新登录Redis了。

三、基于Flexus X实例Redis实践

接下来,以微信发红包及抢红包场景为例,本文展示了如何在Flexus X实例上利用Redis实现高效的数据处理。通过将红包总金额拆分为多个子红包并保存到Redis的list结构中,可实现快速且准确的分发。同时,利用Redis的过期时间设置功能,可确保红包在一定时间后自动失效。

首先,在Spring Boot的配置文件中添加Redis连接配置:

spring:
  application:
    name: activity-service
  redis:
    port: 6379  #redis 端口号  无密码
    host: Flexus X IP
    password: 123456
    database: 0

3.1 发红包

发红包的主要逻辑是将红包总金额拆分为多个子红包,并保存到Redis的list结构中,同时设置过期时间。具体接口代码如下:

 @RequestMapping(value = "/send")
    public String sendRedPackage(int totalMoney, int redPackageNumber){

        //1 拆红包,将红包总金额totalMoney拆分为redPackageNumber个子红包
        Integer[] splitRedPackages = splitRedPackageAlgorithm(totalMoney,redPackageNumber);
        // 2 发红包保存到list结构里面,并且设置过期时间
        String key = RED_PACKAGE_KRY + IdUtil.simpleUUID();
        redisTemplate.opsForList().leftPushAll(key,splitRedPackages);
        redisTemplate.expire(key,1, TimeUnit.DAYS);

        // 3 发红包成功,返回前台显示
        return key+"\t" + Ints.asList(Arrays.stream(splitRedPackages).mapToInt(Integer::valueOf).toArray());
    }

启动服务,调用接口,模拟发红包,比如100元发10个红包

http://localhost:9901/red-package/send?totalMoney=100&redPackageNumber=10

在Flexus X 实例查看 Redis存储情况,可以看到10个数据。

3.2 抢红包

抢红包的逻辑是先验证用户是否已经抢过红包,如果没有,则从列表中取出一个红包并记录领取信息,使用hash结构记录红包领取记录,详细代码如下:

    /**
     * 用户抢红包
     * @param redPackageKey 红包
     * @param userId 用户id
     * @return
     */
    @RequestMapping(value = "/rob")
    public String robRedPackage(String redPackageKey,String userId){
        // 1.验证某个用户是否抢过红包,查询redis记录
        Object redPackage = redisTemplate.opsForHash().get(RED_PACKAGE_CONSUME_KRY + redPackageKey, userId);

        // 2. 用户没有抢过红包
        if (null == redPackage){
            // 3. 用户抢红包,直接获取列表中的其中一个红包
            Object partRedPackage = redisTemplate.opsForList().leftPop(RED_PACKAGE_KRY + redPackageKey);
            if (partRedPackage != null){
                // 4.保存红包领取记录,使用hash结构记录红包领取记录
                redisTemplate.opsForHash().put(RED_PACKAGE_CONSUME_KRY+redPackageKey,userId,partRedPackage);
                System.out.println("用户"+userId+"\t 抢到红包了 " + partRedPackage);
         
                return String.valueOf(partRedPackage);
            }
            return "errorCode : -1 ,红包抢完了";
        }
        return "errorCode : -2 ,"+userId+" 你已经抢过红包了";
    }

调用抢红包接口

http://localhost:9901/red-package/rob?redPackageKey=8dd42389e5614c37bc0d2a27f48710ab&userId=123456789

在Flexus X 实例查看 Redis存储情况,可以看到剩下9个红包。

接口日志打印也能看到用户123456789抢到了红包,金额是7。

在抢红包环节,系统首先验证用户是否已抢过红包,若未抢过则从列表中取出一个红包并记录领取信息。这一过程中,Redis的高并发处理能力和快速读写特性得到了充分体现。

总结

       通过本文的详细阐述和实践案例,可以清晰地看到华为云Flexus X实例自带Redis镜像的巨大优势。这一特性不仅简化了Redis的安装和配置过程,降低了技术门槛,还显著提高了Redis的运行效率和稳定性。在实际应用中,如微信发红包及抢红包场景,Flexus X实例能够轻松应对高并发请求,确保数据处理的快速和准确。

       现在,🔥华为云828 B2B企业节火热进行中!Flexus X实例优惠力度空前,不容错过!🚀

对于追求极致算力性能的朋友,以及需要优化自建MySQL、Redis、Nginx性能的企业,Flexus X实例将是你的不二之选,赶快行动吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小明爱吃火锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值