学习

使用示例应用程序快速入门

Simon Prickett
作者
Simon Prickett, Redis 首席开发者倡导者

让我们动手操作,从 GitHub 克隆应用程序存储库,在 Docker 容器中启动 Redis,并加载示例数据!

提醒 - 软件先决条件#

为了充分利用本课程,您需要一台可以运行应用程序和 Redis 服务器的机器。应用程序直接在您的机器上运行,Redis 服务器在 Docker 容器中运行。

您的机器上需要安装以下内容

  • Docker (您需要 docker-compose 命令)
  • Node.js (使用当前长期支持 - LTS - 版本)
  • git 命令行工具
  • 您喜欢的 IDE(我们喜欢 VSCode,但任何您习惯使用的都可以)
  • Postman - 我们将进行一些 API 调用,Postman 使这变得很容易。

设置/安装流程#

获取代码并安装依赖项#

从 GitHub 克隆课程库并安装依赖项

$ git clone https://github.com/redislabs-training/node-js-crash-course.git
$ cd node-js-crash-course
$ npm install

启动 Redis(Docker)#

docker ps 命令的输出应该显示一个正在运行的容器,使用“redis/redis-stack”映像。该容器运行 Redis,其中包含搜索、JSON、时间序列和概率数据结构。

将示例数据加载到 Redis 中#

使用提供的 data loader 加载课程示例数据。这是一个 Node.js 应用程序

$ npm run load all
> node src/utils/dataloader.js -- "all"

Loading user data...
User data loaded with 0 errors.
Loading location data...
Location data loaded with 0 errors.
Loading location details...
Location detail data loaded with 0 errors.
Loading checkin stream entries...
Loaded 5000 checkin stream entries.
Creating consumer group...
Consumer group created.
Dropping any existing indexes, creating new indexes...
Created indexes.
Deleting any previous bloom filter, creating new bloom filter...
Created bloom filter.

在另一个终端窗口中,运行 Docker 容器中的 redis-cli 可执行文件。然后,在 redis-cli 提示符下输入显示的 Redis 命令以验证数据是否已成功加载

$ docker exec -it rediscrashcourse redis-cli
127.0.0.1:6379> hgetall ncc:locations:106
 1) "id"
 2) "106"
 3) "name"
 4) "Viva Bubble Tea"
 5) "category"
 6) "cafe"
 7) "location"
 8) "-122.268645,37.764288"
 9) "numCheckins"
10) "886"
11) "numStars"
12) "1073"
13) "averageStars"
14) "1"
127.0.0.1:6379> hgetall ncc:users:12
 1) "id"
 2) "12"
 3) "firstName"
 4) "Franziska"
 5) "lastName"
 6) "Sieben"
 7) "email"
 8) "franziska.sieben@example.com"
 9) "password"
10) "$2b$05$uV38PUcdFD3Gm6ElMlBkE.lzZutqWVE6R6ro48GsEjcmnioaZZ55C"
11) "numCheckins"
12) "8945"
13) "lastCheckin"
14) "1490641385511"
15) "lastSeenAt"
16) "22"
127.0.0.1:6379> xlen ncc:checkins
(integer) 5000

启动并配置 RedisInsight#

如果您使用的是 RedisInsight,请启动它,它应该会自动在您的浏览器中打开。如果没有,请将您的浏览器指向 https://localhost:8001。

如果这是您第一次使用 RedisInsight,请点击“我已经有一个数据库”。

如果您已经在 RedisInsight 中配置了其他 Redis 数据库,请点击“添加 Redis 数据库”。

现在,点击“使用主机名和端口连接到 Redis 数据库”。配置如下所示的数据库详细信息,然后点击“添加 Redis 数据库”。

您现在应该能够浏览您的 Redis 实例。如果您需要有关如何从 RedisInsight 连接到 Redis 的更多指导,请查看以下 Justin 的视频,但请确保在配置数据库时使用 127.0.0.1 作为主机,6379 作为端口,并将用户名和密码字段留空。

启动应用程序#

现在是时候启动应用程序的 API 服务器组件并确保它连接到 Redis。该组件监听端口 8081。

如果端口 8081 在您的系统上被占用,请编辑 config.json 文件的这一部分并选择另一个可用的端口

"application": {
  "port": 8081
},

像这样启动服务器

$ npm run dev

> ./node_modules/nodemon/bin/nodemon.js

[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/server.js`
Warning: Environment variable WEATHER_API_KEY is not set!
info: Application listening on port 8081.

这使用 nodemon 启动应用程序,nodemon 会监控源代码的变化,并在检测到变化时重新启动服务器。这在下一模块中将很有用,您将在下一模块中进行一些代码更改。

忽略有关 WEATHER_API_KEY 的警告 - 我们将在后面的练习中解决这个问题,届时我们将了解如何将 Redis 用作缓存。

要验证服务器是否正确运行并连接到 Redis,请将您的浏览器指向

https://localhost:8081/api/location/200

您应该看到位置 200,Katia's Kitchen 的摘要信息

{
  "id": "200",
  "name": "Katia's Kitchen",
  "category": "restaurant",
  "location": "-122.2349598,37.7356811",
  "numCheckins": "359",
  "numStars": "1021",
  "averageStars": "3"
}

太好了!现在您已经启动并运行。让我们继续下一模块,看看我们如何在应用程序中使用 Redis 哈希。您还将编写一些代码!

停止 redis-cli、Redis 容器和应用程序#

现在不要这样做,因为我们才刚刚开始! 但是,当您确实想要关闭所有内容时,以下是如何操作...

要停止运行 redis-cli,只需在 redis-cli 提示符下输入 quit 命令

127.0.0.1:6379> quit
$

要停止 Redis 服务器,请确保您位于 node-js-crash-course 文件夹中,您已将应用程序库检出到该文件夹中,然后:

$ docker-compose down
Stopping rediscrashcourse ... done
Removing rediscrashcourse ... done
Removing network node-js-crash-course_default

Redis 将数据持久化到“redisdata”文件夹。如果您想删除它,只需将其删除即可

$ rm -rf redisdata

要停止每个应用程序组件,请在该组件运行的终端窗口中按 Ctrl+C。例如,要停止 API 服务器

$ npm run dev

> ./node_modules/nodemon/bin/nodemon.js

[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node src/server.js`
info: Application listening on port 8081.
^C
node-js-crash-course $