1 概述

1.1 背景介绍

Redis 是一个高性能的key-value数据库,常用于缓存系统和队列系统。在秒杀场景中,使用 Redis 实现分布式锁是一个常见的做法。这种场景下,需要确保同一时间只有一个用户能够成功下单,以防止超卖的情况发生。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计60分钟。

1.4 案例流程

ac25f864604feb332932099afa09eee4.png{{{width="35%" height="auto"}}}

① 在云主机上安装Redis并设置密码; ② 下载示例代码到云主机; ③ 使用CodeArts IDE打开示例代码工程并修改Redis配置; ④ 在CodeArts IDE上运行模拟测试文件查看结果。

1.5 资源总览

云资源 消耗/时 时长/分钟
开发者空间-云主机 免费版(操作系统:Ubuntu,CPU架构:X86,工具: Java工具集(CodeArts IDE +OpenJDK +Git)) 60

合计:0元

2 安装配置Redis

2.1 在云主机上安装Redis

进入云主机后,点击下方菜单的“Terminal Emulator”按钮,打开命令行工具。

a526e526c53cb89d1425c580c22e9aa7.png

b575b8619b8cdc66d87cae6ecc228155.png

在命令行中输入命令“sudo apt-get install redis-server”安装redis。中途希望继续执行步骤输入y。

410b8fdcf591ab031958072633572856.png

49b7616c2589195b09e5b6c4a30b7862.png

输入命令“sudo systemctl status redis-server” 确认redis已经安装并且服务正在运行。

f637b4e4cfa05866f6f8dd9efbacc00a.png

确认安装好以后,键盘输入“ctrl+c”退出查看状态,接下来登录redis并测试数据的保存和获取,输入命令“redis-cli”登录到redis控制台,由于没有设置密码,所以可以直接登录。

a808cac3569b3cbb8586342a9b370a6c.png

登录后,使用set \<key> \<value>和get \<key>命令实现数据的保存和获取,先输入“get city”查看city的值。

dc0a7544f08057f3d2a04153a326cd00.png

由于没有保存city的值所以是nil,现在输入命令“set city beijing”保存数据。

9d5a8a9895704d88a2e7cd7cb0388722.png

接下来再使用“get city”来查看city的值。

3f9fa2883d2399ced5f38bb2dacfbd3e.png

现在通过city这个key可以获取到beijing这个value值。

最后键盘输入“ctrl+c”退出redis控制台连接。

2.2 修改Redis配置,配置密码

安装好redis后,需要给redis服务器设置密码,先找到redis的配置文件,按照上面方式安装的redis,配置文件路径为/etc/redis/redis.conf,使用命令“sudo vim /etc/redis/redis.conf”打开并编辑配置文件,并找到“requirepass”这一行(可通过英文输入法下,在vim视图输入“/requirepass“, 单击“enter”回车键进入搜索, 单击“n”键表示查找下一个匹配项),单击“i”键进入插入模式,把前面的注释符号“#”删除,并将“foobared”改成想要设置的密码。

54f7777174624622d0e0bd8bf9b1708b.png

d24b8effa26e0df48a55753a29e48361.png

然后按“Esc”退出插入模式,输入“:wq”命令保存文件,接下来使用命令“sudo systemctl restart redis-server”重启redis。

1bb7875625c7e673a46073b5fd1b87cb.png

然后我们在使用命令“redis-cli”登录到redis控制台,并使用“get city”获取数据发现报错,提示我们认证失败。

788ac9fe1f473007fbc0f9daecf22845.png

因为我们已经设置了登录密码,所以现在需要使用密码登录,先输入“ctrl+c”退出控制台,再输入如下命令“redis-cli -h localhost -p 6379 -a \<你的密码>”登录,再使用“get city”,这次可以获取到数据。

db304b420f9f0f2d2504822bb1655b9b.png

3 对接Redis并运行模拟场景

3.1 下载示例代码

打开云主机的火狐浏览器,地址栏输入:https://codelabs.developer.huaweicloud.com/codelabs/samples/dac4adfa38db4e9d98734b1e5edebb5f/view-code/e95253901fca11ea8b68fa163e6e3ea0

打开示例代码页面,登录后点击下载按钮。

02352440cc7012e4ad2cbcaf8854b860.png

找到下载的代码压缩包,解压缩到当前目录。

3b785d37bbd144e17f9d5d7f25cab37e.png

c9809434667b134faf40df1190f35202.png

打开云主机的CodeArts IDE,用IDE打开工程,选择项目代码。

618c73fd8b72f142cdccbf7ad6acef8f.png

c01d1e1f665b55c5148a42e7b1945357.png

打开工程后,稍等片刻,等待IDE加载java相关工具和项目适配。

c89c3555f56402e9c228b6c74d977b5b.png

3.2 修改代码对接Redis

打开“src\main\java\com\huaweicloud\dcs\DistributedLock.java”文件,修改HOST、PORT以及Redis密码等配置信息:

  • HOST改为127.0.0.1

  • PORT改为6379

  • 下面密码改成步骤2.2设置的密码即可 7bae501d3242eb630074011b5fd8eb0f.png

3.3 使用CodeArts IDE的调试功能模拟秒杀场景

打开“src\main\java\com\huaweicloud\dcs\CaseTest.java”文件,添加IDE的运行配置,打开右上角配置的下拉菜单,点击“编辑配置”。

92476152b616ad7232c8f07a5df90304.png

在弹出框内点击左上角的“+”添加配置项。

60f5df58bd8e7f56eed04e5d00b32da7.png

在新的菜单中选择“Java”,在展开的菜单中选择“Launch Current File”,点击“确定”。

33416c3f3730e4cd27998dd7e8c73383.png

接着就可以在菜单中选到新配置。

b142a808ebd00e6e06f3824379be26eb.png

打开项目测试运行文件“CaseTest.java”,运行配置选择“Launch Current File”,点击右面的运行按钮,开始模拟测试。

534ed4ec38d2ca92cff3e811827515e2.png

可以在下面的控制台看到运行结果:

69f7484eee17685ae422a8a92912c665.png

使用2u4g规格的云主机,可能会因为内存不足的原因导致上面执行步骤失败报错,这时可以在命令行工具通过命令来执行。

首先,进入项目代码根目录,右键点击空白处,在菜单中选择命令行工具,

0ff390a6dc00ec3d9d7e078f293af9ed.PNG

在命令行中执行如下命令安装maven工具:

sudo apt install maven

620bded1e8ebbb83ddacb52210ee01eb.png

908d971035516945a2549496d1f7ee79.png

然后执行如下命令打包项目:

mvn clean install

283e246642c03bfba0da5928ed18c50c.PNG

打包成功后,在运行如下命令:

mvn exec:java -Dexec.mainClass="com.huaweicloud.dcs.CaseTest"

65f57165b94a7fc1e989770c9005547c.PNG

可以看到,项目成功运行,本案例操作结束。

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐