目录
前言
华为云作为业界领先的云服务提供商,不断推出创新解决方案以满足这些需求。其中,Flexus X实例凭借其高性能和卓越的用户体验,成为了众多企业和个人的首选。特别是其自带的Redis加速镜像,更是为开发者提供了极大的便利。本文将详细介绍如何利用华为云Flexus X实例自带的Redis镜像,快速部署并配置Redis,以及通过实际案例展示其便捷性和高效性。
一、华为云Flexus X加速Redis购买
1.1 Flexus X实例购买
在开始本文的实践之前,需要在华为云官网上购买Flexus X实例,这个一般可以根据自己的实际需求项目选择合适的配置,比如CPU、内存、存储和网络带宽等。
1.2 Redis加速镜像选择
Flexus X实例强大之处,预装Redis加速镜像的选项,使得开发者在项目部署的时候免去Redis安装,同时主要其X-Turbo加速技术和智能应用调优算法,能够自动优化Redis的性能,减少了手动调优的需求,对于Redis使用频繁的建议选择此镜像。
购买成功后,可以在华为云控制台中看到刚刚购买的Flexus X实例服务器,本文已购买的4核12G的实例,详细配置如下,其中包含Redis加速镜像。
1.3 重置密码
这里需要注意的是,首次购买后,需要重置服务器的登录密码,以便能够远程登录到服务器中。在华为云控制台中,找到Flexus云服务器X实例,点击“重置密码”按钮,然后按照提示设置新的登录密码。
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+" 你已经抢过红包了";
}
调用抢红包接口
在Flexus X 实例查看 Redis存储情况,可以看到剩下9个红包。
接口日志打印也能看到用户123456789抢到了红包,金额是7。
在抢红包环节,系统首先验证用户是否已抢过红包,若未抢过则从列表中取出一个红包并记录领取信息。这一过程中,Redis的高并发处理能力和快速读写特性得到了充分体现。
总结
通过本文的详细阐述和实践案例,可以清晰地看到华为云Flexus X实例自带Redis镜像的巨大优势。这一特性不仅简化了Redis的安装和配置过程,降低了技术门槛,还显著提高了Redis的运行效率和稳定性。在实际应用中,如微信发红包及抢红包场景,Flexus X实例能够轻松应对高并发请求,确保数据处理的快速和准确。
现在,🔥华为云828 B2B企业节火热进行中!Flexus X实例优惠力度空前,不容错过!🚀
对于追求极致算力性能的朋友,以及需要优化自建MySQL、Redis、Nginx性能的企业,Flexus X实例将是你的不二之选,赶快行动吧!

328

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



