栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Node + docker redis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Node + docker redis

1 创建并运行 redis 容器
  1. 从 hub.docker.com 上下载最新的 redis image:
    docker pull redis
C:Usersyanchun>docker pull redis
Using default tag: latest
latest: Pulling from library/redis
42c077c10790: Pull complete
a300d83d65f9: Pull complete
ebdc3afaab5c: Pull complete
6ce178c713e4: Pull complete
949f9d8f429f: Pull complete
4076be5e5074: Pull complete
Digest: sha256:cfda0458239615720cc16d6edf6bae7905c31265f218d2033c43cdb40cd59792
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest

然后可以查看 docker 已经有哪些本地 image:
docker images

C:Usersyanchun>docker images
REPOSITORY     TAG       IMAGE ID       CREATED       SIZE
redis          latest    604d80444252   4 days ago    117MB
  1. 创建一个名称为 my-redis-container 的 redis 容器
    docker run -d -p 6379:6379 --name my-redis-container redis
C:Usersyanchun>docker run -d -p 6379:6379 --name my-redis-container redis
79d0efb5a18093527c38ec6a833327a4e14d64a11f1c86c6f92a40f46a012a4d
  1. 可以查看正在运行的容器:
    docker ps
C:Usersyanchun>docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                    NAMES
79d0efb5a180   redis     "docker-entrypoint.s…"   51 seconds ago   Up 51 seconds   0.0.0.0:6379->6379/tcp   my-redis-container
  1. 可以查看刚创建的 redis 容器的 log:
    docker logs my-redis-container
C:Usersyanchun>docker logs my-redis-container
1:C 18 Jun 2022 07:07:43.792 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 18 Jun 2022 07:07:43.792 # Redis version=7.0.2, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 18 Jun 2022 07:07:43.792 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
1:M 18 Jun 2022 07:07:43.793 * monotonic clock: POSIX clock_gettime
1:M 18 Jun 2022 07:07:43.793 * Running mode=standalone, port=6379.
1:M 18 Jun 2022 07:07:43.793 # Server initialized
1:M 18 Jun 2022 07:07:43.793 * Ready to accept connections
  1. 可以与 redis 容器交互:
    docker exec -it my-redis-container sh

redis 已经在容器中运行:

C:Usersyanchun>docker exec -it my-redis-container sh
# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name dianel
OK
127.0.0.1:6379> get name
"dianel"
127.0.0.1:6379> incr count
(integer) 1
127.0.0.1:6379> incr count
(integer) 2
127.0.0.1:6379> exit
# exit
C:Usersyanchun>
2 使用 Nodejs 与 redis 容器交互

node-redis 文档
https://github.com/redis/node-redis中
给出的与 node-redis v4.1.0 对应的 sample code 如下:

import { createClient } from 'redis';

const client = createClient();

client.on('error', (err) => console.log('Redis Client Error', err));

await client.connect();

await client.set('key', 'value');
const value = await client.get('key');

Nodejs 从 v14 开始支持这种 top level await 语法,
现在建一个 Node 工程,新建文件夹 redis-node-docker, 用 vscode 打开此文件夹,在 terminal 运行:
npm init --yes
npm install redis 此命令将安装当前 redis 最新版本 v4.1.0,当前安装的 Nodejs 版本是 v16.14.0,所以可以使用这种语法。

运行命令 npm install nodemon 安装 nodemon,然后在项目文件夹里新建文件 server.mjs,修改package.json,增加一行 "serve": "nodemon server.mjs":

 "scripts": {
    "serve": "nodemon server.mjs",
    "test": "echo "Error: no test specified" && exit 1"
  },

server.mjs 扩展名是 .mjs,不是 .js, 因为 top level await 语法只能在 ECMAScript module 中使用。
如果不使用 .mjs 扩展名, 那么就需要在 package.json 中增加一行 "type": "module",如下所示:

{
  "name": "redis_node_docker",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",

同时 "serve": "nodemon server.mjs" 改成 "serve": "nodemon server.js"。

以上是设置,server.js 或者 server.mjs 中的代码和上面的sample code几乎完全相同:

import redis from "redis"

const client = redis.createClient()

client.on('error', (err) => console.log('Redis Client Error', err));

await client.connect();

await client.set('key', 'redis');
const value = await client.get('key');
console.log(value)

terminal 运行 npm run serve,输出:

[nodemon] starting `node server.js`
redis
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980863.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号