让我们动手实践,从 GitHub 克隆应用程序仓库,在 Docker 容器中启动 Redis,并加载示例数据!
从 GitHub 克隆课程仓库并安装依赖项
$ git clone https://github.com/redislabs-training/node-js-crash-course.git
$ cd node-js-crash-course
$ npm install
docker ps 命令的输出应该显示一个正在运行的容器,使用的是 "redis/redis-stack" 镜像。此容器运行带有 Search、JSON、Time Series 和 Probabilistic 数据结构的 Redis。
使用提供的数据加载器加载课程示例数据。这是一个 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) "[email protected]"
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,启动它后应该会自动在浏览器中打开。如果没有,请在浏览器中访问 http://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,请在浏览器中访问
http://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 Hashes。你也将有机会编写一些代码!
现在不要执行此操作,我们才刚刚开始! 不过,当你想关闭所有内容时,可以按以下步骤进行...
要停止运行 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 $