Node工程使用云服务器中的redis镜像做数据库

Node,工程,数据库,服务器 · 浏览次数 : 38

小编点评

Node工程建立Redis链接首先安装redis第三方库npm i -S redis 创建工具类RedisHelper.jsconst redis = require(\"redis\");const bluebird = require('bluebird')const {config} = require('./Config')//链接配置const options = { url:'redis://:123456@'+config.URL+\":\"+config.Port};// 使用bluebird将redis中的所有异步方法包括一层Asnycconst client = bluebird.promisifyAll(redis.createClient(options))//监听错误事件client.on(\"error\", (err) => { console.log(\"redis error\", err);});(async ()=>{ //建立链接 await client.connect(); //写数据 await client.set(\"city\",'hangzhou'+Date.now()) //读数据 const value = await client.get(\"city\") console.log(\"value: \"+value) //关闭链接 // await client.quit() //关闭连接 quit可以确保在连接销毁之前,挂起的命令被发送到redis // await client.disconnecting() //强制关闭连接挂起的命令可能没有被发送到redis})()//添加导出方法const getAsync = (key) => { return new Promise((resolve, reject) => { client.get(key) .then((res) => { resolve(res); }) .catch((err)=>{ reject(err); }); });}// const getValue = (key) => {// return getAsync(key)// }const getValue = (key) => { //bluebird内部提供了getAsync方法,它是把get方法封了一层Promise return client.getAsync(key)}exports.getValue = getValue;  Redis图形GUI工具AnotherRedisDesktopManagerhttps://github.com/qishibo/AnotherRedisDesktopManager填写主机IP,授权密码,链接名点击OK进行登录 github地址: https://github.com/zhfei/ReactBasicKnowledge其中的redis-demo项目。归纳总结以上内容,生成内容时需要带简单的排版

正文

 
Redis镜像安装
在云服务器中执行指令
docker pull redis

添加redis镜像实例的配置

[root@VM-0-11-centos ~]# cd /home
[root@VM-0-11-centos home]# ls
mongotest
[root@VM-0-11-centos home]# mkdir redistest
[root@VM-0-11-centos home]# cd redistest/
[root@VM-0-11-centos redistest]# vi docker-compose.yml
[root@VM-0-11-centos redistest]# docker-compose up -d

使用docker-compose管家工具,编写docker-compose.yml文件进行启动配置

version: "3"
services:
  redis-test:
    image: "redis"
    restart: always
    container_name: "redis-test"
    ports:
      # 宿主端口:容器内端口  
      - 15001:6379
    volumes:
      #建立文件备份 宿主目录:容器目录  
      # redis的备份不是说一有数据就会备份的,它会按照一定的策略,自己定时持久话
      - /home/redistest:/data
    #远程登录redis时,需要输入密码,保证redis的安全  
    command: ["redis-server", "--requirepass", "123456"]  

上面的配置和下面的命令是等价的

docker run -itd --restart=always --name redis-test -p 15001:6379 -v /home/redistest:/data redis redis-server --requirepass 123456

通过下面的命令,可以查看镜像启动时的日志

[root@VM-0-11-centos ~]# docker logs -f redis-test

 更新镜像配置

docker-compose up -d

 

Redis的命令行工具redis-cli

Redis常见的CLI命令
//切换到容器中的shell终端
[root@VM-0-11-centos ~]# docker exec -it redis-test /bin/bash
root@fe27aff96dc9:/data# ls
docker-compose.yml  dump.rdb
//运行redis-cli命令行工具
root@fe27aff96dc9:/data# redis-cli
//输入redis设置的安全密码
127.0.0.1:6379> auth 123456
OK
//判断redis服务是否在运行
127.0.0.1:6379> ping
PONG
//断开数据库
127.0.0.1:6379> quit
//退出容器
root@fe27aff96dc9:/data# exit
exit

redis中默认有16个“database”它们其的作用是隔离的作用,它们的区分是通过index来做

分别是1,2,3..号“数据库”
27.0.0.1:6379> select 0
OK
127.0.0.1:6379> set name jack
OK
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name lucy
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> get name
"jack"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get name
"lucy"
127.0.0.1:6379[1]> 

基本操作//keys 后面接正则表达式,用于查询符合条件的所有key127.0.0.1:6379> keys *

1) "test"
2) "name"
3) "test1"
4) "name1"
127.0.0.1:6379> keys test*
1) "test"
2) "test1"
//exists 查询是否存在这个key
127.0.0.1:6379> exists test1
(integer) 1
//del 删除这个key
127.0.0.1:6379> del test1
(integer) 1
127.0.0.1:6379> exists test1
(integer) 0

127.0.0.1:6379> set num 1
OK
//incr 递增
127.0.0.1:6379> incr num
(integer) 2
//decr 递减
127.0.0.1:6379> decr num
(integer) 1

hash表//hset 集合名称 key value, key value,

127.0.0.1:6379> hset city name hangzhou people 3000
(integer) 2
127.0.0.1:6379> hset city
(error) ERR wrong number of arguments for 'hset' command
127.0.0.1:6379> hgetall city
1) "name"
2) "hangzhou"
3) "people"
4) "3000"
127.0.0.1:6379> hget city people
"3000"
127.0.0.1:6379> 
订阅与发送
新开一个终端,直接进入到redis数据库,并打开redis-cli工具
然后开启一个订阅
[root@VM-0-11-centos ~]# docker exec -it redis-test redis-cli -h 127.0.0.1 -a 123456

127.0.0.1:6379> subscribe name name1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "name"
3) (integer) 1
1) "subscribe"
2) "name1"
3) (integer) 2
1) "message"
2) "name"
3) "hello a jack"
从另一个端口发布一个通知
127.0.0.1:6379> publish name "hello a jack"
(integer) 1
127.0.0.1:6379> 

服务器相关

flushdb, flushall 清空数据库127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "city"
2) "test"
3) "name"
4) "num"
5) "name1"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> 
 
Node工程建立Redis链接
首先安装redis第三方库
npm i -S redis

 创建工具类RedisHelper.js

const redis = require("redis");

// //存在用户名:密码时
// // format redis[s]://[[username][:password]@][host][:port][/db-number]:
// const client = redis.createClient({
//   url: "redis://root:0059ssxxSS11@1.xxx.xxx.159:6379",
// });
//
// //不存在用户名时,password为鉴权密码
// const client = redis.createClient({
//   url: "redis://:password1@192.168.0.1:6379",
// });

//链接配置
const options = {
  url:'redis://:123456@1.15.55.28:15001'
};

const client = redis.createClient(options)

//监听错误事件
client.on("error", (err) => {
  console.log("redis error", err);
});


(async ()=>{
  //建立链接
  await client.connect();

  //写数据
  await client.set("city",'hangzhou'+Date.now())
  //读数据
  const value = await client.get("city")
  console.log("value: "+value)

  //关闭链接
  await client.quit()                //关闭连接 quit可以确保在连接销毁之前,挂起的命令被发送到redis
  // await client.disconnecting()       //强制关闭连接 挂起的命令可能没有被发送到redis
})()

执行

node RedisHelper.js
使用bluebird对redis的client的所有异步方法包裹一层Promise,方便开发
const redis = require("redis");
const bluebird = require('bluebird')
const {config} = require('./Config')



//链接配置
const options = {
  url:'redis://:123456@'+config.URL+":"+config.Port
};

// 使用bluebird将redis中的所有异步方法包括一层Asnyc
const client = bluebird.promisifyAll(redis.createClient(options))

//监听错误事件
client.on("error", (err) => {
  console.log("redis error", err);
});


(async ()=>{
  //建立链接
  await client.connect();

  //写数据
  await client.set("city",'hangzhou'+Date.now())
  //读数据
  const value = await client.get("city")
  console.log("value: "+value)

  //关闭链接
  // await client.quit()                //关闭连接 quit可以确保在连接销毁之前,挂起的命令被发送到redis
  // await client.disconnecting()       //强制关闭连接 挂起的命令可能没有被发送到redis
})()


//添加导出方法

const getAsync = (key) => {
  return new Promise((resolve, reject) => {
    client.get(key)
        .then((res) => {
            resolve(res);
        })
        .catch((err)=>{
            reject(err);
        });
  });
}

// const getValue = (key) => {
//   return getAsync(key)
// }
const getValue = (key) => {
  //bluebird内部提供了getAsync方法,它是把get方法封了一层Promise
  return client.getAsync(key)
}


exports.getValue = getValue;

 

 Redis图形GUI工具
AnotherRedisDesktopManager
https://github.com/qishibo/AnotherRedisDesktopManager

填写主机IP,授权密码,链接名点击OK进行登录

其中的redis-demo项目

与Node工程使用云服务器中的redis镜像做数据库相似的内容:

Node工程使用云服务器中的redis镜像做数据库

Redis镜像安装 在云服务器中执行指令 docker pull redis 添加redis镜像实例的配置 [root@VM-0-11-centos ~]# cd /home [root@VM-0-11-centos home]# ls mongotest [root@VM-0-11-centos

如何使用zx编写shell脚本

前言 在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项目引导配置。 编写Shell脚本的问题 创建一个由Bash或者zsh执行的shell脚本,是自动化重

关于cockpit的学习

# 关于cockpit的学习 ## 背景 ``` 使用node-exporter 可以监控很多资源使用情况 但是这个需要搭建一套prometheus和grafana的工具 并且每个机器都需要安装一套node-exporter的进行数据dump cockpit 是红帽开发的一套监控组件, 可以监控网络

iftop的学习与使用

iftop的学习与使用 背景 前段时间一直进行netperf 等网络性能验证工具的学习与使用. 监控很多时候采用了 node-exporter + prometheus + grafana来进行观察 但是到了一些特殊项目现场. 感觉grafana的大屏展示模式,其实存在很多不太优雅的地方. 还是需要

[转帖]k8s中nginx工作线程的问题

https://www.cnblogs.com/lizexiong/p/15198863.html 本次环境背景信息为,需要在k8s里面跑一些前端界面,所以在pod容器中还是使用到了nginx,但是发现,如果nginx worker_processes参数为auto,pod容器会读取node节点的c

Node工程的依赖包管理方式

在前端工程化中,JavaScript 依赖包管理是非常重要的一环。依赖包通常是项目所依赖的第三方库、工具和框架等资源,它们能够帮助我们减少重复开发、提高效率并且确保项目可以正确的运行。

Node.js 未来发展趋势

Node.js 是一种非常有前途的后端技术,它具有高性能、高可扩展性和轻量级等优点。Node.js 还可以用来开发命令行工具和跨平台桌面应用程序等,具有非常广泛的应用场景。

QShop商城-快速开始-前端

QShop商城-快速开始-前端 工具准备 NodeJs 前端环境为NodeJs,下载地址:http://nodejs.cn/download/current/ 。 默认会用版本为Node 16,如找不到我已分享: https://pan.baidu.com/s/1yM2TysvkH0pD7NdAAe

第131篇:如何上传一个npm包

好家伙, NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。 NPM是世界上最大的软件注册表。 1.首先我们去npm官网注册一个账号 (证明你是人....) 2.在本地创建一个新文件夹 最好和你的包同名 3.改

Element-ui源码解析(一):项目目录解析

开始看原码了,我们要开始一些准备工作, 既然是拆代码,那么我们要先把代码搞到手 1.如何下载原码 随便开个项目 npm i element-ui -S 将源码下载到本地 随后在node_modules中找到element-ui文件夹 开搞 2.目录结构解析 目录结构如下: 1.lib:该目录包含了